From 20d9e1028ca09b65b6ea76cf537477adbd12e9e0 Mon Sep 17 00:00:00 2001 From: mwilsnd <53413200+mwilsnd@users.noreply.github.com> Date: Wed, 26 Jul 2023 10:50:34 -0500 Subject: [PATCH] Platform flattening overhaul (#1393) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Bart Louwers --- .github/workflows/ios-ci.yml | 16 +- .pre-commit-config.yaml | 2 +- BUILD.bazel | 111 +- CMakeLists.txt | 4 - bazel/core.bzl | 862 +++ platform/BUILD.bazel | 204 + platform/{ios/platform => }/darwin/.gitignore | 0 platform/darwin/BUILD.bazel | 243 +- .../darwin/app/LimeGreenStyleLayer.h | 0 .../darwin/app/LimeGreenStyleLayer.m | 0 platform/darwin/bazel/files.bzl | 223 + .../{ios/platform => }/darwin/darwin.xcconfig | 0 .../docs/guides/Customizing_Fonts.md} | 0 .../docs/guides/For_Style_Authors.md.ejs} | 0 .../guides/Migrating_to_Expressions.md.ejs} | 0 .../guides/Predicates_and_Expressions.md} | 0 .../docs/guides/Tile_URL_Templates.md.ejs} | 0 .../docs/guides/Working_with_GeoJSON_Data.md} | 0 .../docs/img/data-driven-styling/cast.png | Bin .../exponential-function-1.png | Bin .../exponential-function.png | Bin .../docs/img/data-driven-styling/identity.png | Bin .../docs/img/data-driven-styling/multiply.png | Bin .../docs/theme/assets/css/highlight.css.scss | 0 .../docs/theme/assets/css/jazzy.css.scss | 0 .../docs/theme/assets/fonts/opensans-bold.eot | Bin .../theme/assets/fonts/opensans-bold.woff | Bin .../theme/assets/fonts/opensans-regular.eot | Bin .../theme/assets/fonts/opensans-regular.woff | Bin .../darwin/docs/theme/assets/img/carat.png | Bin .../darwin/docs/theme/assets/img/dash.png | Bin .../darwin/docs/theme/assets/img/github.svg | 0 .../darwin/docs/theme/assets/img/link.svg | 0 .../darwin/docs/theme/assets/img/mapbox.svg | 0 .../darwin/docs/theme/assets/img/minus.svg | 0 .../darwin/docs/theme/assets/img/plus.svg | 0 .../darwin/docs/theme/assets/js/jazzy.js | 0 .../docs/theme/assets/js/jazzy.search.js | 0 .../darwin/docs/theme/assets/js/jquery.min.js | 0 .../darwin/docs/theme/assets/js/lunr.min.js | 0 .../docs/theme/assets/js/typeahead.jquery.js | 0 .../docs/theme/templates/deprecation.mustache | 0 .../darwin/docs/theme/templates/doc.mustache | 0 .../docs/theme/templates/footer.mustache | 0 .../docs/theme/templates/header.mustache | 0 .../darwin/docs/theme/templates/nav.mustache | 0 .../docs/theme/templates/parameter.mustache | 0 .../darwin/docs/theme/templates/task.mustache | 0 .../docs/theme/templates/tasks.mustache | 0 .../{ios/platform => }/darwin/loop-files.json | 0 .../resources/Base.lproj/Foundation.strings | 0 .../resources/ar.lproj/Foundation.stringsdict | 0 .../resources/bg.lproj/Foundation.strings | 0 .../resources/bg.lproj/Foundation.stringsdict | 0 .../resources/ca.lproj/Foundation.strings | 0 .../resources/ca.lproj/Foundation.stringsdict | 0 .../resources/cs.lproj/Foundation.strings | 0 .../resources/cs.lproj/Foundation.stringsdict | 0 .../resources/da.lproj/Foundation.strings | 0 .../resources/da.lproj/Foundation.stringsdict | 0 .../resources/de.lproj/Foundation.strings | 0 .../resources/de.lproj/Foundation.stringsdict | 0 .../resources/en.lproj/Foundation.stringsdict | 0 .../resources/es.lproj/Foundation.strings | 0 .../resources/es.lproj/Foundation.stringsdict | 0 .../resources/fr.lproj/Foundation.strings | 0 .../resources/fr.lproj/Foundation.stringsdict | 0 .../resources/gl.lproj/Foundation.strings | 0 .../resources/gl.lproj/Foundation.stringsdict | 0 .../resources/he.lproj/Foundation.strings | 0 .../resources/hu.lproj/Foundation.stringsdict | 0 .../resources/ja.lproj/Foundation.strings | 0 .../resources/ko.lproj/Foundation.strings | 0 .../resources/ko.lproj/Foundation.stringsdict | 0 .../resources/lt.lproj/Foundation.strings | 0 .../resources/lt.lproj/Foundation.stringsdict | 0 .../resources/pl.lproj/Foundation.stringsdict | 0 .../resources/pt-BR.lproj/Foundation.strings | 0 .../pt-BR.lproj/Foundation.stringsdict | 0 .../pt-PT.lproj/Foundation.stringsdict | 0 .../resources/ru.lproj/Foundation.strings | 0 .../resources/ru.lproj/Foundation.stringsdict | 0 .../resources/sv.lproj/Foundation.strings | 0 .../resources/sv.lproj/Foundation.stringsdict | 0 .../resources/uk.lproj/Foundation.strings | 0 .../resources/uk.lproj/Foundation.stringsdict | 0 .../resources/vi.lproj/Foundation.strings | 0 .../resources/vi.lproj/Foundation.stringsdict | 0 .../zh-Hans.lproj/Foundation.strings | 0 .../zh-Hant.lproj/Foundation.strings | 0 .../darwin/scripts/check-public-symbols.js | 0 .../darwin/scripts/check-public-symbols.sh | 3 + .../darwin/scripts/generate-style-code.js | 59 +- .../style-spec-cocoa-conventions-v8.json | 0 .../scripts/style-spec-overrides-v8.json | 0 .../darwin/scripts/update-examples.js | 0 .../platform => }/darwin/src/MLNAnnotation.h | 0 .../darwin/src/MLNAttributedExpression.h | 0 .../darwin/src/MLNAttributedExpression.m | 0 .../darwin/src/MLNAttributionInfo.h | 0 .../darwin/src/MLNAttributionInfo.mm | 0 .../darwin/src/MLNAttributionInfo_Private.h | 0 .../darwin/src/MLNClockDirectionFormatter.h | 0 .../darwin/src/MLNClockDirectionFormatter.m | 0 .../platform => }/darwin/src/MLNCluster.h | 0 .../darwin/src/MLNCompassDirectionFormatter.h | 0 .../darwin/src/MLNCompassDirectionFormatter.m | 0 .../darwin/src/MLNComputedShapeSource.h | 0 .../darwin/src/MLNComputedShapeSource.mm | 0 .../src/MLNComputedShapeSource_Private.h | 0 .../platform => }/darwin/src/MLNConversion.h | 0 .../darwin/src/MLNCoordinateFormatter.h | 0 .../darwin/src/MLNCoordinateFormatter.m | 0 .../darwin/src/MLNDefaultStyle.h | 0 .../darwin/src/MLNDefaultStyle.mm | 0 .../darwin/src/MLNDistanceFormatter.h | 0 .../darwin/src/MLNDistanceFormatter.m | 0 .../platform => }/darwin/src/MLNFeature.h | 0 .../platform => }/darwin/src/MLNFeature.mm | 0 .../darwin/src/MLNFeature_Private.h | 0 .../darwin/src/MLNForegroundStyleLayer.h | 0 .../darwin/src/MLNForegroundStyleLayer.mm | 0 .../platform => }/darwin/src/MLNFoundation.h | 0 .../platform => }/darwin/src/MLNFoundation.mm | 0 .../darwin/src/MLNFoundation_Private.h | 0 .../platform => }/darwin/src/MLNGeometry.h | 0 .../platform => }/darwin/src/MLNGeometry.mm | 0 .../darwin/src/MLNGeometry_Private.h | 0 .../platform => }/darwin/src/MLNImageSource.h | 0 .../darwin/src/MLNImageSource.mm | 0 .../platform => }/darwin/src/MLNLight.h.ejs | 0 .../platform => }/darwin/src/MLNLight.mm.ejs | 0 .../darwin/src/MLNLight_Private.h | 0 .../darwin/src/MLNLocationManager.h | 0 .../darwin/src/MLNLocationManager.m | 0 .../darwin/src/MLNLocationManager_Private.h | 0 .../darwin/src/MLNLoggingConfiguration.h | 0 .../darwin/src/MLNLoggingConfiguration.mm | 0 .../src/MLNLoggingConfiguration_Private.h | 0 .../platform => }/darwin/src/MLNMapCamera.h | 0 .../platform => }/darwin/src/MLNMapCamera.mm | 0 .../darwin/src/MLNMapSnapshotter.h | 0 .../darwin/src/MLNMapSnapshotter.mm | 0 .../darwin/src/MLNMapSnapshotter_Private.h | 0 .../platform => }/darwin/src/MLNMultiPoint.h | 0 .../platform => }/darwin/src/MLNMultiPoint.mm | 0 .../darwin/src/MLNMultiPoint_Private.h | 0 .../darwin/src/MLNNetworkConfiguration.h | 0 .../darwin/src/MLNNetworkConfiguration.mm | 0 .../src/MLNNetworkConfiguration_Private.h | 0 .../platform => }/darwin/src/MLNOfflinePack.h | 0 .../darwin/src/MLNOfflinePack.mm | 0 .../darwin/src/MLNOfflinePack_Private.h | 0 .../darwin/src/MLNOfflineRegion.h | 0 .../darwin/src/MLNOfflineRegion_Private.h | 0 .../darwin/src/MLNOfflineStorage.h | 0 .../darwin/src/MLNOfflineStorage.mm | 0 .../darwin/src/MLNOfflineStorage_Private.h | 0 .../darwin/src/MLNOpenGLStyleLayer.h | 0 .../darwin/src/MLNOpenGLStyleLayer.mm | 0 .../darwin/src/MLNOpenGLStyleLayer_Private.h | 0 .../platform => }/darwin/src/MLNOverlay.h | 0 .../darwin/src/MLNPointAnnotation.h | 0 .../darwin/src/MLNPointAnnotation.mm | 0 .../darwin/src/MLNPointCollection.h | 0 .../darwin/src/MLNPointCollection.mm | 0 .../darwin/src/MLNPointCollection_Private.h | 0 .../platform => }/darwin/src/MLNPolygon.h | 0 .../platform => }/darwin/src/MLNPolygon.mm | 0 .../darwin/src/MLNPolygon_Private.h | 0 .../platform => }/darwin/src/MLNPolyline.h | 0 .../platform => }/darwin/src/MLNPolyline.mm | 0 .../darwin/src/MLNPolyline_Private.h | 0 .../darwin/src/MLNRasterDEMSource.h | 0 .../darwin/src/MLNRasterDEMSource.mm | 0 .../darwin/src/MLNRasterTileSource.h | 0 .../darwin/src/MLNRasterTileSource.mm | 0 .../darwin/src/MLNRasterTileSource_Private.h | 0 .../darwin/src/MLNReachability.h | 0 .../darwin/src/MLNReachability.m | 0 .../darwin/src/MLNRendererConfiguration.h | 0 .../darwin/src/MLNRendererConfiguration.m | 0 .../darwin/src/MLNRendererFrontend.h | 0 .../platform => }/darwin/src/MLNSettings.h | 0 .../platform => }/darwin/src/MLNSettings.mm | 0 .../darwin/src/MLNSettings_Private.h | 0 .../{ios/platform => }/darwin/src/MLNShape.h | 0 .../{ios/platform => }/darwin/src/MLNShape.mm | 0 .../darwin/src/MLNShapeCollection.h | 0 .../darwin/src/MLNShapeCollection.mm | 0 .../darwin/src/MLNShapeOfflineRegion.h | 0 .../darwin/src/MLNShapeOfflineRegion.mm | 0 .../src/MLNShapeOfflineRegion_Private.h | 0 .../platform => }/darwin/src/MLNShapeSource.h | 0 .../darwin/src/MLNShapeSource.mm | 0 .../darwin/src/MLNShapeSource_Private.h | 0 .../darwin/src/MLNShape_Private.h | 0 .../{ios/platform => }/darwin/src/MLNSource.h | 0 .../platform => }/darwin/src/MLNSource.mm | 0 .../darwin/src/MLNSource_Private.h | 0 .../{ios/platform => }/darwin/src/MLNStyle.h | 0 .../{ios/platform => }/darwin/src/MLNStyle.mm | 0 .../platform => }/darwin/src/MLNStyleLayer.h | 0 .../darwin/src/MLNStyleLayer.h.ejs | 0 .../platform => }/darwin/src/MLNStyleLayer.mm | 0 .../darwin/src/MLNStyleLayer.mm.ejs | 0 .../darwin/src/MLNStyleLayerManager.h | 0 .../darwin/src/MLNStyleLayerManager.mm | 0 .../darwin/src/MLNStyleLayer_Private.h | 0 .../darwin/src/MLNStyleLayer_Private.h.ejs | 0 .../platform => }/darwin/src/MLNStyleValue.h | 0 .../platform => }/darwin/src/MLNStyleValue.mm | 0 .../darwin/src/MLNStyleValue_Private.h | 0 .../darwin/src/MLNStyle_Private.h | 0 .../darwin/src/MLNTilePyramidOfflineRegion.h | 0 .../darwin/src/MLNTilePyramidOfflineRegion.mm | 0 .../src/MLNTilePyramidOfflineRegion_Private.h | 0 .../darwin/src/MLNTileServerOptions.h | 0 .../darwin/src/MLNTileServerOptions.mm | 0 .../platform => }/darwin/src/MLNTileSource.h | 0 .../platform => }/darwin/src/MLNTileSource.mm | 0 .../darwin/src/MLNTileSource_Private.h | 0 .../{ios/platform => }/darwin/src/MLNTypes.h | 0 .../{ios/platform => }/darwin/src/MLNTypes.m | 0 .../darwin/src/MLNValueEvaluator.h | 0 .../darwin/src/MLNVectorStyleLayer.h | 0 .../darwin/src/MLNVectorStyleLayer.mm | 0 .../darwin/src/MLNVectorTileSource.h | 0 .../darwin/src/MLNVectorTileSource.mm | 0 .../darwin/src/MLNVectorTileSource_Private.h | 0 .../darwin/src/NSArray+MLNAdditions.h | 0 .../darwin/src/NSArray+MLNAdditions.mm | 0 .../darwin/src/NSBundle+MLNAdditions.h | 0 .../darwin/src/NSBundle+MLNAdditions.mm | 0 .../darwin/src/NSCoder+MLNAdditions.h | 0 .../darwin/src/NSCoder+MLNAdditions.mm | 0 .../src/NSComparisonPredicate+MLNAdditions.h | 0 .../src/NSComparisonPredicate+MLNAdditions.mm | 0 .../src/NSCompoundPredicate+MLNAdditions.h | 0 .../src/NSCompoundPredicate+MLNAdditions.mm | 0 .../darwin/src/NSDate+MLNAdditions.h | 0 .../darwin/src/NSDate+MLNAdditions.mm | 0 .../darwin/src/NSDictionary+MLNAdditions.h | 0 .../darwin/src/NSDictionary+MLNAdditions.mm | 0 .../darwin/src/NSException+MLNAdditions.h | 0 .../darwin/src/NSExpression+MLNAdditions.h | 0 .../darwin/src/NSExpression+MLNAdditions.mm | 0 .../src/NSExpression+MLNPrivateAdditions.h | 0 .../darwin/src/NSPredicate+MLNAdditions.h | 0 .../darwin/src/NSPredicate+MLNAdditions.mm | 0 .../src/NSPredicate+MLNPrivateAdditions.h | 0 .../darwin/src/NSString+MLNAdditions.h | 0 .../darwin/src/NSString+MLNAdditions.m | 0 .../darwin/src/NSURL+MLNAdditions.h | 0 .../darwin/src/NSURL+MLNAdditions.m | 0 .../darwin/src/NSValue+MLNAdditions.h | 0 .../darwin/src/NSValue+MLNAdditions.m | 0 .../src/NSValue+MLNStyleAttributeAdditions.h | 0 .../src/NSValue+MLNStyleAttributeAdditions.mm | 0 .../darwin/test/MLNAttributionInfoTests.m | 0 .../test/MLNClockDirectionFormatterTests.m | 0 .../darwin/test/MLNCodingTests.mm | 0 .../test/MLNCompassDirectionFormatterTests.m | 0 .../darwin/test/MLNComputedShapeSourceTests.m | 0 .../darwin/test/MLNCoordinateFormatterTests.m | 0 .../darwin/test/MLNDistanceFormatterTests.m | 0 .../test/MLNDocumentationExampleTests.swift | 0 .../test/MLNDocumentationGuideTests.swift | 0 .../darwin/test/MLNExpressionTests.mm | 0 .../darwin/test/MLNFeatureTests.mm | 0 .../darwin/test/MLNGeometryTests.mm | 0 .../darwin/test/MLNHeatmapColorTests.mm | 0 .../darwin/test/MLNImageSourceTests.m | 0 .../darwin/test/MLNImageTests.mm | 0 .../darwin/test/MLNLightTest.mm.ejs | 0 .../darwin/test/MLNMapCameraTests.m | 0 .../darwin/test/MLNMapProjectionTests.m | 0 .../darwin/test/MLNMapSnapshotterTests.m | 0 .../darwin/test/MLNMapViewTests.m | 0 .../darwin/test/MLNNSDateAdditionsTests.mm | 0 .../darwin/test/MLNNSStringAdditionsTests.m | 0 .../darwin/test/MLNOfflinePackTests.mm | 0 .../darwin/test/MLNOfflineRegionTests.m | 0 .../darwin/test/MLNOfflineStorageTests.mm | 0 .../darwin/test/MLNPredicateTests.mm | 0 .../test/MLNRendererConfigurationTests.m | 0 .../darwin/test/MLNResourceTests.mm | 0 .../darwin/test/MLNSDKTestHelpers.swift | 0 .../darwin/test/MLNShapeSourceTests.mm | 0 .../darwin/test/MLNSourceQueryTests.m | 0 .../darwin/test/MLNStyleLayerTests.h | 0 .../darwin/test/MLNStyleLayerTests.m | 0 .../darwin/test/MLNStyleLayerTests.mm.ejs | 0 .../darwin/test/MLNStyleTests.mm | 0 .../darwin/test/MLNTestAssertionHandler.h | 0 .../darwin/test/MLNTestAssertionHandler.m | 0 .../darwin/test/MLNTestUtility.h | 0 .../darwin/test/MLNTileSetTests.mm | 0 .../darwin/test/Media.xcassets/Contents.json | 0 .../Media.xcassets/Fixtures/Contents.json | 0 .../MLNMapSnapshotterTests/Contents.json | 0 .../PingFang.imageset/Contents.json | 0 .../PingFang.imageset/actualImage.png | Bin .../PingFang.imageset/expected.png | Bin .../background.imageset/Contents.json | 0 .../background.imageset/background.png | Bin .../RadarImage.imageset/Contents.json | 0 .../RadarImage.imageset/radar.png | Bin .../Contents.json | 0 .../TrackingLocationMask.png | Bin .../TrackingLocationMask@2x.png | Bin .../TrackingLocationMask@3x.png | Bin .../darwin/test/amsterdam.geojson | 0 .../platform => }/darwin/test/one-liner.json | 0 .../darwin/test/test-Bridging-Header.h | 0 platform/default/BUILD.bazel | 1 + .../default/src/mbgl/render-test/main.cpp | 23 +- platform/ios/.cmake-format | 91 - platform/ios/BUILD.bazel | 541 +- platform/ios/CHANGELOG.md | 1491 ++++- platform/ios/CMakeLists.txt | 6 - platform/ios/CONTRIBUTING.md | 243 +- .../Documentation.docc/Documentation.md | 0 platform/ios/INSTALL.md | 240 +- .../AppDelegate.h | 0 .../AppDelegate.m | 0 .../AppIcon.appiconset/Contents.json | 0 .../Base.lproj/LaunchScreen.storyboard | 0 .../Info.plist | 0 .../main.m | 0 .../MLNAnnotationViewIntegrationTests.mm | 0 .../MLNCameraTransitionFinishTests.mm | 0 .../Camera Tests/MLNCameraTransitionTests.mm | 0 .../Info.plist | 0 .../MBGLIntegrationTests.mm | 0 .../MLNIntegrationTestCase.h | 0 .../MLNIntegrationTestCase.m | 0 .../MLNMapViewIntegrationTest.h | 0 .../MLNMapViewIntegrationTest.m | 0 .../MLNMapViewPendingBlockTests.m | 0 ...MLNNetworkConfigurationIntegrationTests.mm | 0 .../MLNShapeSourceTests.m | 0 .../MLNSourceTests.swift | 0 .../MLNStyleLayerIntegrationTests.m | 0 .../MLNStyleURLIntegrationTest.m | 0 .../MLNTestLocationManager.h | 0 .../MLNTestLocationManager.m | 0 .../MLNMapSnapshotterSwiftTests.swift | 0 .../Snapshotter Tests/MLNMapSnapshotterTest.m | 0 .../integration-Bridging-Header.h | 0 .../Mapbox-iOS-SDK-snapshot-dynamic.podspec | 0 .../ios => }/Mapbox-iOS-SDK-stripped.podspec | 0 .../{platform/ios => }/Mapbox-iOS-SDK.podspec | 0 .../ios => }/Mapbox.playground/Contents.swift | 0 .../Mapbox.playground/contents.xcplayground | 0 .../contents.xcworkspacedata | 0 platform/ios/README.md | 145 +- .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/Icon-1024.png | Bin .../AppIcon.appiconset/Icon-29@2x-1.png | Bin .../AppIcon.appiconset/Icon-29@2x.png | Bin .../AppIcon.appiconset/Icon-29@3x.png | Bin .../AppIcon.appiconset/Icon-40.png | Bin .../AppIcon.appiconset/Icon-40@2x-1.png | Bin .../AppIcon.appiconset/Icon-40@2x.png | Bin .../AppIcon.appiconset/Icon-60@2x.png | Bin .../AppIcon.appiconset/Icon-60@3x.png | Bin .../AppIcon.appiconset/Icon-76.png | Bin .../AppIcon.appiconset/Icon-76@2x.png | Bin .../AppIcon.appiconset/Icon-83.5@2x.png | Bin .../AppIcon.appiconset/Icon-Small.png | Bin .../Icon-Spotlight-40@3x.png | Bin .../app/Assets.xcassets/Contents.json | 0 .../Contents.json | 0 .../TrackingHeadingMask.png | Bin .../TrackingHeadingMask@2x.png | Bin .../TrackingHeadingMask@3x.png | Bin .../Contents.json | 0 .../TrackingLocationMask.png | Bin .../TrackingLocationMask@2x.png | Bin .../TrackingLocationMask@3x.png | Bin .../Contents.json | 0 .../TrackingLocationOffMask.png | Bin .../TrackingLocationOffMask@2x.png | Bin .../TrackingLocationOffMask@3x.png | Bin .../settings.imageset/Contents.json | 0 .../settings.imageset/settings.pdf | Bin .../app/Base.lproj/Localizable.strings | 0 .../ios/{platform/ios => }/app/Info.plist | 0 .../ios => }/app/LaunchScreen.storyboard | 0 .../ios => }/app/MBXAnnotationView.h | 0 .../ios => }/app/MBXAnnotationView.m | 0 .../{platform/ios => }/app/MBXAppDelegate.h | 0 .../{platform/ios => }/app/MBXAppDelegate.m | 0 .../ios => }/app/MBXCustomCalloutView.h | 0 .../ios => }/app/MBXCustomCalloutView.m | 0 .../app/MBXCustomLocationViewController.h | 0 .../app/MBXCustomLocationViewController.m | 0 .../app/MBXEmbeddedMapViewController.h | 0 .../app/MBXEmbeddedMapViewController.m | 0 .../ios => }/app/MBXFrameTimeGraphView.h | 0 .../ios => }/app/MBXFrameTimeGraphView.m | 0 .../app/MBXOfflinePacksTableViewController.h | 0 .../app/MBXOfflinePacksTableViewController.m | 0 .../ios => }/app/MBXOrnamentsViewController.h | 0 .../ios => }/app/MBXOrnamentsViewController.m | 0 .../ios => }/app/MBXSnapshotsViewController.h | 0 .../ios => }/app/MBXSnapshotsViewController.m | 0 .../ios/{platform/ios => }/app/MBXState.h | 0 .../ios/{platform/ios => }/app/MBXState.m | 0 .../{platform/ios => }/app/MBXStateManager.h | 0 .../{platform/ios => }/app/MBXStateManager.m | 0 .../app/MBXUserLocationAnnotationView.h | 0 .../app/MBXUserLocationAnnotationView.m | 0 .../ios => }/app/MBXViewController.h | 0 .../ios => }/app/MBXViewController.m | 0 .../ios => }/app/MLNMapView_Experimental.h | 0 .../{platform/ios => }/app/Main.storyboard | 0 .../Settings.bundle/Base.lproj/Root.strings | 0 .../ios => }/app/Settings.bundle/Root.plist | 0 .../app/Settings.bundle/ar.lproj/Root.strings | 0 .../app/Settings.bundle/bg.lproj/Root.strings | 0 .../app/Settings.bundle/ca.lproj/Root.strings | 0 .../app/Settings.bundle/cs.lproj/Root.strings | 0 .../app/Settings.bundle/da.lproj/Root.strings | 0 .../app/Settings.bundle/de.lproj/Root.strings | 0 .../app/Settings.bundle/en.lproj/Root.strings | 0 .../app/Settings.bundle/es.lproj/Root.strings | 0 .../app/Settings.bundle/fi.lproj/Root.strings | 0 .../app/Settings.bundle/fr.lproj/Root.strings | 0 .../app/Settings.bundle/gl.lproj/Root.strings | Bin .../app/Settings.bundle/he.lproj/Root.strings | 0 .../app/Settings.bundle/hu.lproj/Root.strings | 0 .../app/Settings.bundle/it.lproj/Root.strings | Bin .../app/Settings.bundle/ko.lproj/Root.strings | 0 .../app/Settings.bundle/lt.lproj/Root.strings | 0 .../app/Settings.bundle/nl.lproj/Root.strings | 0 .../app/Settings.bundle/pl.lproj/Root.strings | 0 .../Settings.bundle/pt-BR.lproj/Root.strings | 0 .../Settings.bundle/pt-PT.lproj/Root.strings | 0 .../app/Settings.bundle/ru.lproj/Root.strings | 0 .../app/Settings.bundle/sv.lproj/Root.strings | 0 .../app/Settings.bundle/uk.lproj/Root.strings | 0 .../app/Settings.bundle/vi.lproj/Root.strings | 0 .../zh-Hans.lproj/Root.strings | 0 .../zh-Hant.lproj/Root.strings | 0 .../ios => }/app/ar.lproj/Localizable.strings | 0 .../ios => }/app/bg.lproj/Localizable.strings | 0 .../ios => }/app/ca.lproj/Localizable.strings | 0 .../ios => }/app/cs.lproj/Localizable.strings | 0 .../ios => }/app/da.lproj/Localizable.strings | 0 .../ios => }/app/de.lproj/Localizable.strings | 0 .../ios => }/app/es.lproj/Localizable.strings | 0 .../ios => }/app/fi.lproj/Localizable.strings | 0 .../ios => }/app/fill_filter_style.json | 0 .../ios => }/app/fr.lproj/Localizable.strings | 0 .../ios => }/app/gl.lproj/Localizable.strings | 0 .../ios => }/app/he.lproj/Localizable.strings | 0 .../ios => }/app/hu.lproj/Localizable.strings | 0 .../ios => }/app/insert_access_token.sh | 0 .../ios => }/app/ja.lproj/Localizable.strings | 0 .../ios => }/app/ko.lproj/Localizable.strings | 0 .../ios => }/app/line_filter_style.json | 0 .../ios => }/app/lt.lproj/Localizable.strings | 0 platform/ios/{platform/ios => }/app/main.m | 0 .../{platform/ios => }/app/missing_icon.json | 0 .../ios => }/app/nl.lproj/Localizable.strings | 0 .../ios => }/app/numeric_filter_style.json | 0 .../ios => }/app/pl.lproj/Localizable.strings | 0 .../ios/{platform/ios => }/app/points.geojson | 0 .../{platform/ios => }/app/polyline.geojson | 0 .../app/pt-BR.lproj/Localizable.strings | 0 .../app/pt-PT.lproj/Localizable.strings | 0 .../ios => }/app/ru.lproj/Localizable.strings | 0 .../{platform/ios => }/app/simple_route.json | 366 +- .../ios => }/app/sv.lproj/Localizable.strings | 0 .../ios => }/app/threestates.geojson | 0 .../ios => }/app/uk.lproj/Localizable.strings | 0 .../ios => }/app/vi.lproj/Localizable.strings | 0 .../app/zh-Hans.lproj/Localizable.strings | 0 .../app/zh-Hant.lproj/Localizable.strings | 0 .../Localizable.strings => bazel/BUILD.bazel} | 0 platform/ios/bazel/files.bzl | 104 + platform/ios/bazel/provisioning.bzl | 17 + .../Info.plist | 0 .../bench_UITests.swift | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/Icon-1.png | Bin .../AppIcon.appiconset/Icon-2.png | Bin .../AppIcon.appiconset/Icon-3.png | Bin .../AppIcon.appiconset/Icon-4.png | Bin .../AppIcon.appiconset/Icon-40.png | Bin .../AppIcon.appiconset/Icon-40@2x.png | Bin .../AppIcon.appiconset/Icon-40@3x.png | Bin .../AppIcon.appiconset/Icon-76.png | Bin .../AppIcon.appiconset/Icon-76@2x.png | Bin .../AppIcon.appiconset/Icon-Small.png | Bin .../AppIcon.appiconset/Icon-Small@2x.png | Bin .../AppIcon.appiconset/Icon-Small@3x.png | Bin .../AppIcon.appiconset/Icon.png | Bin .../AppIcon.appiconset/iTunesArtwork.png | Bin .../AppIcon.appiconset/iTunesArtwork@2x.png | Bin .../Base.lproj/LaunchScreen.storyboard | 0 .../{platform/ios => }/benchmark/Info.plist | 0 .../ios => }/benchmark/MBXBenchAppDelegate.h | 0 .../ios => }/benchmark/MBXBenchAppDelegate.m | 0 .../benchmark/MBXBenchViewController.h | 0 .../benchmark/MBXBenchViewController.mm | 0 .../ios => }/benchmark/assets/download.sh | 0 .../benchmark/assets/glyphs/download.sh | 0 .../ios => }/benchmark/assets/readme.txt | 0 .../benchmark/assets/sprites/sprite.json | 0 .../benchmark/assets/sprites/sprite.png | Bin .../benchmark/assets/sprites/sprite@2x.json | 0 .../benchmark/assets/sprites/sprite@2x.png | Bin .../benchmark/assets/styles/streets.json | 0 .../benchmark/assets/tiles/download.sh | 0 .../benchmark/assets/tiles/openmaptiles.json | 0 .../ios => }/benchmark/insert_access_token.sh | 0 .../ios => }/benchmark/locations.cpp | 0 .../ios => }/benchmark/locations.hpp | 0 .../ios/{platform/ios => }/benchmark/main.m | 0 platform/ios/ccache-c.in | 9 - platform/ios/ccache-cxx.in | 9 - platform/ios/ccache.cmake | 27 - .../ios/{platform/ios => }/core-files.json | 0 .../docs/guides/Gesture Recognizers.md | 0 .../ios => }/docs/guides/Info.plist Keys.md | 0 .../ios => }/docs/img/screenshot.png | Bin .../img/user-interaction/RotateSydney.gif | Bin .../docs/img/user-interaction/quickzoom.gif | Bin .../ios/{platform/ios => }/docs/pod-README.md | 0 .../ios => }/framework/Info-static.plist | 0 .../{platform/ios => }/framework/Info.plist | 0 .../ios => }/framework/Mapbox-static.h | 0 .../{platform/ios => }/framework/modulemap | 0 .../ios => }/framework/strip-frameworks.sh | 0 platform/ios/ios-test-runners.cmake | 223 - platform/ios/ios.cmake | 127 - .../ios => }/iosapp-UITests/BUILD.bazel | 8 + .../ios => }/iosapp-UITests/Info.plist | 0 .../XCTestCase+Extensions.swift | 0 .../iosapp-UITests/iosapp_TestPlan.xctestplan | 0 .../iosapp-UITests/iosapp_UITests.swift | 0 platform/ios/{platform/ios => }/jazzy.yml | 0 .../ios => }/originals/compass.sketch | Bin .../ios => }/originals/screenshot.sketch | Bin platform/ios/platform/darwin/README.md | 10 - platform/ios/platform/darwin/ci.xcconfig | 1 - .../include/mbgl/util/image+MLNAdditions.hpp | 12 - platform/ios/platform/darwin/test/BUILD.bazel | 91 - .../default/src/mbgl/render-test/main.cpp | 9 - platform/ios/platform/ios/CHANGELOG.md | 1487 ----- platform/ios/platform/ios/CONTRIBUTING.md | 259 - platform/ios/platform/ios/INSTALL.md | 237 - platform/ios/platform/ios/README.md | 166 - .../platform/ios/WorkspaceSettings.xcsettings | 22 - platform/ios/platform/ios/config.cmake | 51 - platform/ios/platform/ios/ios.xcconfig | 6 - .../ios/ios.xcodeproj/project.pbxproj | 5094 ----------------- .../contents.xcworkspacedata | 7 - .../xcshareddata/xcschemes/CI.xcscheme | 151 - .../Integration Test Harness.xcscheme | 97 - .../xcshareddata/xcschemes/bench.xcscheme | 97 - .../xcschemes/dynamic+static.xcscheme | 134 - .../xcshareddata/xcschemes/dynamic.xcscheme | 123 - .../xcshareddata/xcschemes/iosapp.xcscheme | 119 - .../xcshareddata/xcschemes/static.xcscheme | 85 - .../ios.xcworkspace/contents.xcworkspacedata | 13 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 - platform/ios/platform/ios/toolchain.cmake | 927 --- platform/ios/platform/macos/CHANGELOG.md | 680 --- platform/ios/platform/macos/DEVELOPING.md | 140 - platform/ios/platform/macos/INSTALL.md | 104 - platform/ios/platform/macos/README.md | 25 - platform/ios/platform/macos/config.cmake | 132 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - platform/ios/platform/macos/ninja | Bin 171356 -> 0 bytes .../resources/Base.lproj/Localizable.strings | 0 .../Compass.imageset/Contents.json | 0 .../Compass.imageset/compass.pdf | Bin .../resources/Images.xcassets/Contents.json | 0 .../default_marker.imageset/Contents.json | 0 .../default_marker.pdf | Bin .../mapbox.imageset/Contents.json | 0 .../mapbox.imageset/mapbox.pdf | Bin .../mapbox_helmet.imageset/Contents.json | 0 .../mapbox_helmet.imageset/mapbox_helmet.pdf | 0 .../ios/{platform/ios => }/resources/README | 0 .../ar.lproj/Localizable.stringsdict | 0 .../resources/bg.lproj/Localizable.strings | 0 .../bg.lproj/Localizable.stringsdict | 0 .../resources/ca.lproj/Localizable.strings | 0 .../ca.lproj/Localizable.stringsdict | 0 .../resources/cs.lproj/Localizable.strings | 0 .../cs.lproj/Localizable.stringsdict | 0 .../resources/da.lproj/Localizable.strings | 0 .../da.lproj/Localizable.stringsdict | 0 .../resources/de.lproj/Localizable.strings | 0 .../de.lproj/Localizable.stringsdict | 0 .../en.lproj/Localizable.stringsdict | 0 .../resources/es.lproj/Localizable.strings | 0 .../es.lproj/Localizable.stringsdict | 0 .../resources/fr.lproj/Localizable.strings | 0 .../fr.lproj/Localizable.stringsdict | 0 .../resources/gl.lproj/Localizable.strings | 0 .../gl.lproj/Localizable.stringsdict | 0 .../resources/he.lproj/Localizable.strings | 0 .../resources/hu.lproj/Localizable.strings | 0 .../hu.lproj/Localizable.stringsdict | 0 .../resources/ja.lproj/Localizable.strings | 0 .../resources/ko.lproj/Localizable.strings | 0 .../ko.lproj/Localizable.stringsdict | 0 .../resources/lt.lproj/Localizable.strings | 0 .../lt.lproj/Localizable.stringsdict | 0 .../resources/pt-BR.lproj/Localizable.strings | 0 .../pt-BR.lproj/Localizable.stringsdict | 0 .../resources/pt-PT.lproj/Localizable.strings | 0 .../pt-PT.lproj/Localizable.stringsdict | 0 .../resources/ru.lproj/Localizable.strings | 0 .../ru.lproj/Localizable.stringsdict | 0 .../resources/sv.lproj/Localizable.strings | 0 .../sv.lproj/Localizable.stringsdict | 0 .../resources/uk.lproj/Localizable.strings | 0 .../uk.lproj/Localizable.stringsdict | 0 .../resources/vi.lproj/Localizable.strings | 0 .../vi.lproj/Localizable.stringsdict | 0 .../zh-Hans.lproj/Localizable.strings | 0 .../zh-Hant.lproj/Localizable.strings | 0 .../zh-Hant.lproj/Localizable.stringsdict | 0 .../ios => }/scripts/bazel-package.sh | 8 +- .../ios => }/scripts/bazel-xcodeproj.sh | 10 +- .../ios => }/scripts/deploy-packages.sh | 0 .../ios => }/scripts/deploy-snapshot.sh | 0 .../ios => }/scripts/deploy-swift-package.sh | 0 .../ios => }/scripts/deploy-to-cocoapods.sh | 0 .../{platform/ios => }/scripts/document.sh | 0 .../scripts/install-packaging-dependencies.sh | 0 .../ios => }/scripts/ios-code-coverage.sh | 0 platform/ios/scripts/lint-plists.sh | 13 + .../ios => }/scripts/lint-podspecs.js | 0 .../ios/{platform/ios => }/scripts/metrics.sh | 0 .../ios/{platform/ios => }/scripts/package.sh | 0 .../ios/{platform/ios => }/scripts/publish.sh | 0 .../scripts/release-notes-github.md.ejs | 0 .../scripts/release-notes-jazzy.md.ejs | 0 .../ios => }/scripts/release-notes.js | 0 platform/ios/scripts/standalone.cmake | 18 - .../scripts/swift_package_template.swift | 0 .../ios => }/scripts/update-swift-package.sh | 0 .../ios => }/scripts/update-version.sh | 0 .../scripts/validate-framework-zip.sh | 0 .../{platform/ios => }/scripts/xcpackage.sh | 0 .../ios/{platform/ios => }/sdk-files.json | 0 .../ios => }/src/MLNAnnotationContainerView.h | 0 .../ios => }/src/MLNAnnotationContainerView.m | 0 .../src/MLNAnnotationContainerView_Private.h | 0 .../ios => }/src/MLNAnnotationImage.h | 0 .../ios => }/src/MLNAnnotationImage.m | 0 .../ios => }/src/MLNAnnotationImage_Private.h | 0 .../ios => }/src/MLNAnnotationView.h | 0 .../ios => }/src/MLNAnnotationView.mm | 0 .../ios => }/src/MLNAnnotationView_Private.h | 0 .../{platform/ios => }/src/MLNCalloutView.h | 0 .../ios => }/src/MLNCameraChangeReason.h | 0 .../ios => }/src/MLNCompactCalloutView.h | 0 .../ios => }/src/MLNCompactCalloutView.m | 0 .../{platform/ios => }/src/MLNCompassButton.h | 0 .../ios => }/src/MLNCompassButton.mm | 0 .../ios => }/src/MLNCompassButton_Private.h | 0 .../src/MLNFaux3DUserLocationAnnotationView.h | 0 .../MLNFaux3DUserLocationAnnotationView.mm | 0 .../ios => }/src/MLNMapAccessibilityElement.h | 0 .../src/MLNMapAccessibilityElement.mm | 0 .../{platform/ios => }/src/MLNMapProjection.h | 0 .../ios => }/src/MLNMapProjection.mm | 0 .../ios => }/src/MLNMapView+IBAdditions.h | 0 .../{platform/ios => }/src/MLNMapView+Impl.h | 0 .../{platform/ios => }/src/MLNMapView+Impl.mm | 0 .../ios => }/src/MLNMapView+OpenGL.h | 0 .../ios => }/src/MLNMapView+OpenGL.mm | 0 .../ios/{platform/ios => }/src/MLNMapView.h | 0 .../ios/{platform/ios => }/src/MLNMapView.mm | 0 .../ios => }/src/MLNMapViewDelegate.h | 0 .../ios => }/src/MLNMapView_Private.h | 0 .../ios/{platform/ios => }/src/MLNScaleBar.h | 0 .../ios/{platform/ios => }/src/MLNScaleBar.mm | 0 .../{platform/ios => }/src/MLNUserLocation.h | 0 .../{platform/ios => }/src/MLNUserLocation.m | 0 .../src/MLNUserLocationAnnotationView.h | 0 .../src/MLNUserLocationAnnotationView.m | 0 .../src/MLNUserLocationAnnotationViewStyle.h | 0 .../src/MLNUserLocationAnnotationViewStyle.m | 0 .../MLNUserLocationAnnotationView_Private.h | 0 .../src/MLNUserLocationHeadingArrowLayer.h | 0 .../src/MLNUserLocationHeadingArrowLayer.m | 0 .../src/MLNUserLocationHeadingBeamLayer.h | 0 .../src/MLNUserLocationHeadingBeamLayer.m | 0 .../src/MLNUserLocationHeadingIndicator.h | 0 .../ios => }/src/MLNUserLocation_Private.h | 0 platform/ios/{platform/ios => }/src/Mapbox.h | 0 .../ios => }/src/NSOrthography+MLNAdditions.h | 0 .../ios => }/src/NSOrthography+MLNAdditions.m | 0 .../ios => }/src/UIColor+MLNAdditions.h | 0 .../ios => }/src/UIColor+MLNAdditions.mm | 0 .../ios => }/src/UIDevice+MLNAdditions.h | 0 .../ios => }/src/UIDevice+MLNAdditions.m | 0 .../ios => }/src/UIImage+MLNAdditions.h | 0 .../ios => }/src/UIImage+MLNAdditions.mm | 0 .../ios => }/src/UIView+MLNAdditions.h | 0 .../ios => }/src/UIView+MLNAdditions.m | 0 .../src/UIViewController+MLNAdditions.h | 0 .../src/UIViewController+MLNAdditions.m | 0 .../ios/{platform/ios => }/test/BUILD.bazel | 20 +- .../ios => }/test/CI-Expressions.xctestplan | 0 .../ios/{platform/ios => }/test/CI.xctestplan | 0 .../ios/{platform/ios => }/test/Info.plist | 0 .../MLNAnnotationViewIntegrationTests.swift | 0 .../ios => }/test/MLNAnnotationViewTests.m | 0 .../test/MLNMapAccessibilityElementTests.m | 0 .../test/MLNMapViewCompassViewTests.mm | 0 .../test/MLNMapViewContentInsetTests.m | 0 .../MLNMapViewDelegateIntegrationTests.swift | 0 .../ios => }/test/MLNMapViewDirectionTests.mm | 0 .../test/MLNMapViewGestureRecognizerTests.mm | 0 .../ios => }/test/MLNMapViewLayoutTests.m | 0 .../ios => }/test/MLNMapViewPitchTests.m | 0 .../ios => }/test/MLNMapViewScaleBarTests.m | 0 .../ios => }/test/MLNMapViewZoomTests.mm | 0 .../ios => }/test/MLNMockGestureRecognizers.h | 0 .../ios => }/test/MLNMockGestureRecognizers.m | 0 .../test/MLNNSOrthographyAdditionsTests.m | 0 .../test/MLNNetworkConfigurationTests.m | 0 platform/ios/test/common/BUILD.bazel | 2 +- .../ios/{platform/ios => }/vendor/BUILD.bazel | 7 +- .../vendor/SMCalloutView/SMCalloutView.h | 0 .../vendor/SMCalloutView/SMCalloutView.m | 0 platform/macos/BUILD.bazel | 38 + platform/macos/CHANGELOG.md | 679 ++- platform/macos/DEVELOPING.md | 139 +- .../platform => }/macos/ExportOptions.plist | 0 platform/macos/INSTALL.md | 103 +- .../macos/Mapbox-macOS-SDK-symbols.podspec | 0 .../macos/Mapbox-macOS-SDK.podspec | 0 platform/macos/README.md | 26 +- .../macos/WorkspaceSettings.xcsettings | 0 .../platform => }/macos/app/AppDelegate.h | 0 .../platform => }/macos/app/AppDelegate.m | 0 .../AppIcon.appiconset/AppIcon128x128.png | Bin .../AppIcon.appiconset/AppIcon128x128@2x.png | Bin .../AppIcon.appiconset/AppIcon16x16.png | Bin .../AppIcon.appiconset/AppIcon16x16@2x.png | Bin .../AppIcon.appiconset/AppIcon256x256.png | Bin .../AppIcon.appiconset/AppIcon256x256@2x.png | Bin .../AppIcon.appiconset/AppIcon32x32.png | Bin .../AppIcon.appiconset/AppIcon32x32@2x.png | Bin .../AppIcon.appiconset/AppIcon512x512.png | Bin .../AppIcon.appiconset/AppIcon512x512@2x.png | Bin .../AppIcon.appiconset/Contents.json | 0 .../macos/app/Assets.xcassets/Contents.json | 0 .../app/Assets.xcassets/Layers/Contents.json | 0 .../Layers/background.imageset/Contents.json | 0 .../Layers/background.imageset/background.pdf | 0 .../Layers/circle.imageset/Contents.json | 0 .../Layers/circle.imageset/circle.pdf | 0 .../fill-extrusion.imageset/Contents.json | 0 .../fill-extrusion.pdf | 0 .../Layers/fill.imageset/Contents.json | 0 .../Layers/fill.imageset/fill.pdf | Bin .../Layers/heatmap.imageset/Contents.json | 0 .../Layers/heatmap.imageset/heatmap.pdf | Bin .../Layers/hillshade.imageset/Contents.json | 0 .../Layers/hillshade.imageset/hillshade.pdf | 0 .../Layers/symbol.imageset/Contents.json | 0 .../Layers/symbol.imageset/symbol.pdf | 0 .../app/Assets.xcassets/Radar/Contents.json | 0 .../Radar/southeast_0.imageset/Contents.json | 0 .../southeast_radar_0.png | Bin .../Radar/southeast_1.imageset/Contents.json | 0 .../southeast_radar_1.png | Bin .../Radar/southeast_2.imageset/Contents.json | 0 .../southeast_radar_2.png | Bin .../Radar/southeast_3.imageset/Contents.json | 0 .../southeast_radar_3.png | Bin .../ohio.imageset/Contents.json | 0 .../Assets.xcassets/ohio.imageset/ohio.pdf | Bin .../app/Base.lproj}/Localizable.strings | 0 .../macos/app/Base.lproj/MainMenu.xib | 0 .../macos/app/Base.lproj/MapDocument.xib | 0 .../{ios/platform => }/macos/app/Credits.rtf | 0 .../macos/app/DroppedPinAnnotation.h | 0 .../macos/app/DroppedPinAnnotation.m | 0 .../{ios/platform => }/macos/app/Info.plist | 0 .../app/LocationCoordinate2DTransformer.h | 0 .../app/LocationCoordinate2DTransformer.m | 0 .../macos/app/MLNStyle+MBXAdditions.h | 0 .../macos/app/MLNStyle+MBXAdditions.m | 0 .../platform => }/macos/app/MapDocument.h | 0 .../platform => }/macos/app/MapDocument.m | 0 .../app/OfflinePackNameValueTransformer.h | 0 .../app/OfflinePackNameValueTransformer.m | 0 .../macos/app/StyleLayerIconTransformer.h | 0 .../macos/app/StyleLayerIconTransformer.m | 0 .../macos/app/TimeIntervalTransformer.h | 0 .../macos/app/TimeIntervalTransformer.m | 0 .../app/ar.lproj}/Localizable.strings | 0 .../app/bg.lproj}/Localizable.strings | 0 .../app/ca.lproj}/Localizable.strings | 0 .../app/cs.lproj}/Localizable.strings | 0 .../app/da.lproj}/Localizable.strings | 0 .../app/de.lproj}/Localizable.strings | 0 .../app/es.lproj}/Localizable.strings | 0 .../app/fi.lproj}/Localizable.strings | 0 .../app/fr.lproj}/Localizable.strings | 0 .../app/gl.lproj}/Localizable.strings | 0 .../app/he.lproj}/Localizable.strings | 0 .../{ios/platform => }/macos/app/heatmap.json | 0 .../app/hu.lproj}/Localizable.strings | 0 .../app/ja.lproj}/Localizable.strings | 0 .../app/ko.lproj}/Localizable.strings | 0 .../app/lt.lproj}/Localizable.strings | 0 platform/{ios/platform => }/macos/app/main.m | 0 .../app/nl.lproj}/Localizable.strings | 0 .../app/pl.lproj}/Localizable.strings | 0 .../app/pt-BR.lproj}/Localizable.strings | 0 .../app/pt-PT.lproj}/Localizable.strings | 0 .../macos/app/resources/background.svg | 0 .../macos/app/resources/circle.svg | 0 .../macos/app/resources/fill-extrusion.svg | 0 .../macos/app/resources/fill.svg | 0 .../macos/app/resources/heatmap.svg | 0 .../macos/app/resources/hillshade.svg | 0 .../macos/app/resources/symbol.svg | 0 .../app/ru.lproj}/Localizable.strings | 0 .../app/sv.lproj}/Localizable.strings | 0 .../app/uk.lproj}/Localizable.strings | 0 .../app/vi.lproj}/Localizable.strings | 0 .../{ios/platform => }/macos/app/wms.json | 0 .../app/zh-Hans.lproj}/Localizable.strings | 0 .../app/zh-Hant.lproj/Localizable.strings | 0 platform/macos/bazel/files.bzl | 37 + .../{ios/platform => }/macos/core-files.json | 0 .../platform => }/macos/docs/doc-README.md | 0 .../macos/docs/guides/Info.plist Keys.md | 0 .../macos/docs/img/screenshot.jpg | Bin .../platform => }/macos/docs/pod-README.md | 0 platform/{ios/platform => }/macos/jazzy.yml | 0 platform/macos/macos.cmake | 171 - .../{ios/platform => }/macos/macos.xcconfig | 0 .../macos/macos.xcodeproj/project.pbxproj | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/xcschemes/CI.xcscheme | 0 .../xcshareddata/xcschemes/dynamic.xcscheme | 0 .../xcshareddata/xcschemes/macosapp.xcscheme | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcdebugger/Breakpoints_v2.xcbkptlist | 0 .../macos/scripts/deploy-packages.sh | 0 .../platform => }/macos/scripts/document.sh | 0 .../platform => }/macos/scripts/metrics.sh | 0 .../platform => }/macos/scripts/package.sh | 0 .../macos/scripts/release-notes-github.md.ejs | 0 .../macos/scripts/release-notes-jazzy.md.ejs | 0 .../macos/scripts/release-notes.js | 0 .../macos/scripts/update-version.sh | 0 .../{ios/platform => }/macos/sdk-files.json | 0 .../macos/sdk/Base.lproj/Localizable.strings | 0 .../sdk/Base.lproj/MLNAnnotationCallout.xib | 0 .../{ios/platform => }/macos/sdk/Info.plist | 0 .../macos/sdk/ar.lproj/Localizable.strings | 0 .../macos/sdk/bg.lproj/Localizable.strings | 0 .../macos/sdk/ca.lproj/Localizable.strings | 0 .../macos/sdk/cs.lproj/Localizable.strings | 0 .../macos/sdk/da.lproj/Localizable.strings | 0 .../macos/sdk/de.lproj/Localizable.strings | 0 .../macos/sdk/default_marker.pdf | Bin .../macos/sdk/es.lproj/Localizable.strings | 0 .../macos/sdk/fi.lproj/Localizable.strings | 0 .../macos/sdk/fr.lproj/Localizable.strings | 0 .../macos/sdk/gl.lproj/Localizable.strings | 0 .../macos/sdk/he.lproj/Localizable.strings | 0 .../macos/sdk/hu.lproj/Localizable.strings | 0 .../macos/sdk/ja.lproj/Localizable.strings | 0 .../macos/sdk/lt.lproj/Localizable.strings | 0 .../{ios/platform => }/macos/sdk/mapbox.pdf | Bin .../platform => }/macos/sdk/mapbox_helmet.pdf | 0 .../macos/sdk/nl.lproj/Localizable.strings | 0 .../macos/sdk/pl.lproj/Localizable.strings | 0 .../macos/sdk/pt-BR.lproj/Localizable.strings | 0 .../macos/sdk/pt-PT.lproj/Localizable.strings | 0 .../macos/sdk/ru.lproj/Localizable.strings | 0 .../macos/sdk/sv.lproj/Localizable.strings | 0 .../macos/sdk/uk.lproj/Localizable.strings | 0 .../macos/sdk/vi.lproj/Localizable.strings | 0 .../sdk/zh-Hans.lproj/Localizable.strings | 0 .../sdk/zh-Hant.lproj/Localizable.strings | 0 .../macos/src/MLNAnnotationImage.h | 0 .../macos/src/MLNAnnotationImage.m | 0 .../macos/src/MLNAnnotationImage_Private.h | 0 .../macos/src/MLNAttributionButton.h | 0 .../macos/src/MLNAttributionButton.mm | 0 .../platform => }/macos/src/MLNCompassCell.h | 0 .../platform => }/macos/src/MLNCompassCell.m | 0 .../macos/src/MLNMapView+IBAdditions.h | 0 .../macos/src/MLNMapView+IBAdditions.mm | 0 .../platform => }/macos/src/MLNMapView+Impl.h | 0 .../macos/src/MLNMapView+Impl.mm | 0 .../macos/src/MLNMapView+OpenGL.h | 8 +- .../macos/src/MLNMapView+OpenGL.mm | 0 .../{ios/platform => }/macos/src/MLNMapView.h | 0 .../platform => }/macos/src/MLNMapView.mm | 0 .../macos/src/MLNMapViewDelegate.h | 0 .../macos/src/MLNMapView_Private.h | 0 .../platform => }/macos/src/MLNOpenGLLayer.h | 0 .../platform => }/macos/src/MLNOpenGLLayer.mm | 0 .../{ios/platform => }/macos/src/Mapbox.h | 0 .../macos/src/NSColor+MLNAdditions.h | 0 .../macos/src/NSColor+MLNAdditions.mm | 0 .../macos/src/NSImage+MLNAdditions.h | 0 .../macos/src/NSImage+MLNAdditions.mm | 0 .../macos/src/NSProcessInfo+MLNAdditions.h | 0 .../macos/src/NSProcessInfo+MLNAdditions.m | 0 .../platform => }/macos/test/CI.xctestplan | 0 .../{ios/platform => }/macos/test/Info.plist | 0 .../macos/test/MLNAnnotationTests.m | 0 .../macos/test/MLNAttributionButtonTests.m | 0 .../MLNMapViewDelegateIntegrationTests.swift | 0 render-test/BUILD.bazel | 2 +- scripts/generate-style-code.js | 38 +- scripts/style-code.js | 11 +- shaders/generate_shader_code.js | 130 +- 932 files changed, 5445 insertions(+), 11714 deletions(-) create mode 100644 bazel/core.bzl create mode 100644 platform/BUILD.bazel rename platform/{ios/platform => }/darwin/.gitignore (100%) rename platform/{ios/platform => }/darwin/app/LimeGreenStyleLayer.h (100%) rename platform/{ios/platform => }/darwin/app/LimeGreenStyleLayer.m (100%) create mode 100644 platform/darwin/bazel/files.bzl rename platform/{ios/platform => }/darwin/darwin.xcconfig (100%) rename platform/{ios/platform/darwin/docs/guides/Customizing Fonts.md => darwin/docs/guides/Customizing_Fonts.md} (100%) rename platform/{ios/platform/darwin/docs/guides/For Style Authors.md.ejs => darwin/docs/guides/For_Style_Authors.md.ejs} (100%) rename platform/{ios/platform/darwin/docs/guides/Migrating to Expressions.md.ejs => darwin/docs/guides/Migrating_to_Expressions.md.ejs} (100%) rename platform/{ios/platform/darwin/docs/guides/Predicates and Expressions.md => darwin/docs/guides/Predicates_and_Expressions.md} (100%) rename platform/{ios/platform/darwin/docs/guides/Tile URL Templates.md.ejs => darwin/docs/guides/Tile_URL_Templates.md.ejs} (100%) rename platform/{ios/platform/darwin/docs/guides/Working with GeoJSON Data.md => darwin/docs/guides/Working_with_GeoJSON_Data.md} (100%) rename platform/{ios/platform => }/darwin/docs/img/data-driven-styling/cast.png (100%) rename platform/{ios/platform => }/darwin/docs/img/data-driven-styling/exponential-function-1.png (100%) rename platform/{ios/platform => }/darwin/docs/img/data-driven-styling/exponential-function.png (100%) rename platform/{ios/platform => }/darwin/docs/img/data-driven-styling/identity.png (100%) rename platform/{ios/platform => }/darwin/docs/img/data-driven-styling/multiply.png (100%) rename platform/{ios/platform => }/darwin/docs/theme/assets/css/highlight.css.scss (100%) rename platform/{ios/platform => }/darwin/docs/theme/assets/css/jazzy.css.scss (100%) rename platform/{ios/platform => }/darwin/docs/theme/assets/fonts/opensans-bold.eot (100%) mode change 100755 => 100644 rename platform/{ios/platform => }/darwin/docs/theme/assets/fonts/opensans-bold.woff (100%) mode change 100755 => 100644 rename platform/{ios/platform => }/darwin/docs/theme/assets/fonts/opensans-regular.eot (100%) mode change 100755 => 100644 rename platform/{ios/platform => }/darwin/docs/theme/assets/fonts/opensans-regular.woff (100%) mode change 100755 => 100644 rename platform/{ios/platform => }/darwin/docs/theme/assets/img/carat.png (100%) mode change 100755 => 100644 rename platform/{ios/platform => }/darwin/docs/theme/assets/img/dash.png (100%) mode change 100755 => 100644 rename platform/{ios/platform => }/darwin/docs/theme/assets/img/github.svg (100%) rename platform/{ios/platform => }/darwin/docs/theme/assets/img/link.svg (100%) rename platform/{ios/platform => }/darwin/docs/theme/assets/img/mapbox.svg (100%) rename platform/{ios/platform => }/darwin/docs/theme/assets/img/minus.svg (100%) rename platform/{ios/platform => }/darwin/docs/theme/assets/img/plus.svg (100%) rename platform/{ios/platform => }/darwin/docs/theme/assets/js/jazzy.js (100%) mode change 100755 => 100644 rename platform/{ios/platform => }/darwin/docs/theme/assets/js/jazzy.search.js (100%) rename platform/{ios/platform => }/darwin/docs/theme/assets/js/jquery.min.js (100%) mode change 100755 => 100644 rename platform/{ios/platform => }/darwin/docs/theme/assets/js/lunr.min.js (100%) rename platform/{ios/platform => }/darwin/docs/theme/assets/js/typeahead.jquery.js (100%) rename platform/{ios/platform => }/darwin/docs/theme/templates/deprecation.mustache (100%) rename platform/{ios/platform => }/darwin/docs/theme/templates/doc.mustache (100%) rename platform/{ios/platform => }/darwin/docs/theme/templates/footer.mustache (100%) rename platform/{ios/platform => }/darwin/docs/theme/templates/header.mustache (100%) rename platform/{ios/platform => }/darwin/docs/theme/templates/nav.mustache (100%) rename platform/{ios/platform => }/darwin/docs/theme/templates/parameter.mustache (100%) rename platform/{ios/platform => }/darwin/docs/theme/templates/task.mustache (100%) rename platform/{ios/platform => }/darwin/docs/theme/templates/tasks.mustache (100%) rename platform/{ios/platform => }/darwin/loop-files.json (100%) rename platform/{ios/platform => }/darwin/resources/Base.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/ar.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/bg.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/bg.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/ca.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/ca.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/cs.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/cs.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/da.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/da.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/de.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/de.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/en.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/es.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/es.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/fr.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/fr.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/gl.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/gl.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/he.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/hu.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/ja.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/ko.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/ko.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/lt.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/lt.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/pl.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/pt-BR.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/pt-BR.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/pt-PT.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/ru.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/ru.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/sv.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/sv.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/uk.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/uk.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/vi.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/vi.lproj/Foundation.stringsdict (100%) rename platform/{ios/platform => }/darwin/resources/zh-Hans.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/resources/zh-Hant.lproj/Foundation.strings (100%) rename platform/{ios/platform => }/darwin/scripts/check-public-symbols.js (100%) mode change 100755 => 100644 create mode 100755 platform/darwin/scripts/check-public-symbols.sh rename platform/{ios/platform => }/darwin/scripts/generate-style-code.js (96%) mode change 100755 => 100644 rename platform/{ios/platform => }/darwin/scripts/style-spec-cocoa-conventions-v8.json (100%) rename platform/{ios/platform => }/darwin/scripts/style-spec-overrides-v8.json (100%) rename platform/{ios/platform => }/darwin/scripts/update-examples.js (100%) mode change 100755 => 100644 rename platform/{ios/platform => }/darwin/src/MLNAnnotation.h (100%) rename platform/{ios/platform => }/darwin/src/MLNAttributedExpression.h (100%) rename platform/{ios/platform => }/darwin/src/MLNAttributedExpression.m (100%) rename platform/{ios/platform => }/darwin/src/MLNAttributionInfo.h (100%) rename platform/{ios/platform => }/darwin/src/MLNAttributionInfo.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNAttributionInfo_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNClockDirectionFormatter.h (100%) rename platform/{ios/platform => }/darwin/src/MLNClockDirectionFormatter.m (100%) rename platform/{ios/platform => }/darwin/src/MLNCluster.h (100%) rename platform/{ios/platform => }/darwin/src/MLNCompassDirectionFormatter.h (100%) rename platform/{ios/platform => }/darwin/src/MLNCompassDirectionFormatter.m (100%) rename platform/{ios/platform => }/darwin/src/MLNComputedShapeSource.h (100%) rename platform/{ios/platform => }/darwin/src/MLNComputedShapeSource.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNComputedShapeSource_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNConversion.h (100%) rename platform/{ios/platform => }/darwin/src/MLNCoordinateFormatter.h (100%) rename platform/{ios/platform => }/darwin/src/MLNCoordinateFormatter.m (100%) rename platform/{ios/platform => }/darwin/src/MLNDefaultStyle.h (100%) rename platform/{ios/platform => }/darwin/src/MLNDefaultStyle.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNDistanceFormatter.h (100%) rename platform/{ios/platform => }/darwin/src/MLNDistanceFormatter.m (100%) rename platform/{ios/platform => }/darwin/src/MLNFeature.h (100%) rename platform/{ios/platform => }/darwin/src/MLNFeature.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNFeature_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNForegroundStyleLayer.h (100%) rename platform/{ios/platform => }/darwin/src/MLNForegroundStyleLayer.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNFoundation.h (100%) rename platform/{ios/platform => }/darwin/src/MLNFoundation.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNFoundation_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNGeometry.h (100%) rename platform/{ios/platform => }/darwin/src/MLNGeometry.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNGeometry_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNImageSource.h (100%) rename platform/{ios/platform => }/darwin/src/MLNImageSource.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNLight.h.ejs (100%) rename platform/{ios/platform => }/darwin/src/MLNLight.mm.ejs (100%) rename platform/{ios/platform => }/darwin/src/MLNLight_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNLocationManager.h (100%) rename platform/{ios/platform => }/darwin/src/MLNLocationManager.m (100%) rename platform/{ios/platform => }/darwin/src/MLNLocationManager_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNLoggingConfiguration.h (100%) rename platform/{ios/platform => }/darwin/src/MLNLoggingConfiguration.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNLoggingConfiguration_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNMapCamera.h (100%) rename platform/{ios/platform => }/darwin/src/MLNMapCamera.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNMapSnapshotter.h (100%) rename platform/{ios/platform => }/darwin/src/MLNMapSnapshotter.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNMapSnapshotter_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNMultiPoint.h (100%) rename platform/{ios/platform => }/darwin/src/MLNMultiPoint.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNMultiPoint_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNNetworkConfiguration.h (100%) rename platform/{ios/platform => }/darwin/src/MLNNetworkConfiguration.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNNetworkConfiguration_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNOfflinePack.h (100%) rename platform/{ios/platform => }/darwin/src/MLNOfflinePack.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNOfflinePack_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNOfflineRegion.h (100%) rename platform/{ios/platform => }/darwin/src/MLNOfflineRegion_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNOfflineStorage.h (100%) rename platform/{ios/platform => }/darwin/src/MLNOfflineStorage.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNOfflineStorage_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNOpenGLStyleLayer.h (100%) rename platform/{ios/platform => }/darwin/src/MLNOpenGLStyleLayer.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNOpenGLStyleLayer_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNOverlay.h (100%) rename platform/{ios/platform => }/darwin/src/MLNPointAnnotation.h (100%) rename platform/{ios/platform => }/darwin/src/MLNPointAnnotation.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNPointCollection.h (100%) rename platform/{ios/platform => }/darwin/src/MLNPointCollection.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNPointCollection_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNPolygon.h (100%) rename platform/{ios/platform => }/darwin/src/MLNPolygon.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNPolygon_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNPolyline.h (100%) rename platform/{ios/platform => }/darwin/src/MLNPolyline.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNPolyline_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNRasterDEMSource.h (100%) rename platform/{ios/platform => }/darwin/src/MLNRasterDEMSource.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNRasterTileSource.h (100%) rename platform/{ios/platform => }/darwin/src/MLNRasterTileSource.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNRasterTileSource_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNReachability.h (100%) rename platform/{ios/platform => }/darwin/src/MLNReachability.m (100%) rename platform/{ios/platform => }/darwin/src/MLNRendererConfiguration.h (100%) rename platform/{ios/platform => }/darwin/src/MLNRendererConfiguration.m (100%) rename platform/{ios/platform => }/darwin/src/MLNRendererFrontend.h (100%) rename platform/{ios/platform => }/darwin/src/MLNSettings.h (100%) rename platform/{ios/platform => }/darwin/src/MLNSettings.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNSettings_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNShape.h (100%) rename platform/{ios/platform => }/darwin/src/MLNShape.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNShapeCollection.h (100%) rename platform/{ios/platform => }/darwin/src/MLNShapeCollection.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNShapeOfflineRegion.h (100%) rename platform/{ios/platform => }/darwin/src/MLNShapeOfflineRegion.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNShapeOfflineRegion_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNShapeSource.h (100%) rename platform/{ios/platform => }/darwin/src/MLNShapeSource.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNShapeSource_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNShape_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNSource.h (100%) rename platform/{ios/platform => }/darwin/src/MLNSource.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNSource_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNStyle.h (100%) rename platform/{ios/platform => }/darwin/src/MLNStyle.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNStyleLayer.h (100%) rename platform/{ios/platform => }/darwin/src/MLNStyleLayer.h.ejs (100%) rename platform/{ios/platform => }/darwin/src/MLNStyleLayer.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNStyleLayer.mm.ejs (100%) rename platform/{ios/platform => }/darwin/src/MLNStyleLayerManager.h (100%) rename platform/{ios/platform => }/darwin/src/MLNStyleLayerManager.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNStyleLayer_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNStyleLayer_Private.h.ejs (100%) rename platform/{ios/platform => }/darwin/src/MLNStyleValue.h (100%) rename platform/{ios/platform => }/darwin/src/MLNStyleValue.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNStyleValue_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNStyle_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNTilePyramidOfflineRegion.h (100%) rename platform/{ios/platform => }/darwin/src/MLNTilePyramidOfflineRegion.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNTilePyramidOfflineRegion_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNTileServerOptions.h (100%) rename platform/{ios/platform => }/darwin/src/MLNTileServerOptions.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNTileSource.h (100%) rename platform/{ios/platform => }/darwin/src/MLNTileSource.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNTileSource_Private.h (100%) rename platform/{ios/platform => }/darwin/src/MLNTypes.h (100%) rename platform/{ios/platform => }/darwin/src/MLNTypes.m (100%) rename platform/{ios/platform => }/darwin/src/MLNValueEvaluator.h (100%) rename platform/{ios/platform => }/darwin/src/MLNVectorStyleLayer.h (100%) rename platform/{ios/platform => }/darwin/src/MLNVectorStyleLayer.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNVectorTileSource.h (100%) rename platform/{ios/platform => }/darwin/src/MLNVectorTileSource.mm (100%) rename platform/{ios/platform => }/darwin/src/MLNVectorTileSource_Private.h (100%) rename platform/{ios/platform => }/darwin/src/NSArray+MLNAdditions.h (100%) rename platform/{ios/platform => }/darwin/src/NSArray+MLNAdditions.mm (100%) rename platform/{ios/platform => }/darwin/src/NSBundle+MLNAdditions.h (100%) rename platform/{ios/platform => }/darwin/src/NSBundle+MLNAdditions.mm (100%) rename platform/{ios/platform => }/darwin/src/NSCoder+MLNAdditions.h (100%) rename platform/{ios/platform => }/darwin/src/NSCoder+MLNAdditions.mm (100%) rename platform/{ios/platform => }/darwin/src/NSComparisonPredicate+MLNAdditions.h (100%) rename platform/{ios/platform => }/darwin/src/NSComparisonPredicate+MLNAdditions.mm (100%) rename platform/{ios/platform => }/darwin/src/NSCompoundPredicate+MLNAdditions.h (100%) rename platform/{ios/platform => }/darwin/src/NSCompoundPredicate+MLNAdditions.mm (100%) rename platform/{ios/platform => }/darwin/src/NSDate+MLNAdditions.h (100%) rename platform/{ios/platform => }/darwin/src/NSDate+MLNAdditions.mm (100%) rename platform/{ios/platform => }/darwin/src/NSDictionary+MLNAdditions.h (100%) rename platform/{ios/platform => }/darwin/src/NSDictionary+MLNAdditions.mm (100%) rename platform/{ios/platform => }/darwin/src/NSException+MLNAdditions.h (100%) rename platform/{ios/platform => }/darwin/src/NSExpression+MLNAdditions.h (100%) rename platform/{ios/platform => }/darwin/src/NSExpression+MLNAdditions.mm (100%) rename platform/{ios/platform => }/darwin/src/NSExpression+MLNPrivateAdditions.h (100%) rename platform/{ios/platform => }/darwin/src/NSPredicate+MLNAdditions.h (100%) rename platform/{ios/platform => }/darwin/src/NSPredicate+MLNAdditions.mm (100%) rename platform/{ios/platform => }/darwin/src/NSPredicate+MLNPrivateAdditions.h (100%) rename platform/{ios/platform => }/darwin/src/NSString+MLNAdditions.h (100%) rename platform/{ios/platform => }/darwin/src/NSString+MLNAdditions.m (100%) rename platform/{ios/platform => }/darwin/src/NSURL+MLNAdditions.h (100%) rename platform/{ios/platform => }/darwin/src/NSURL+MLNAdditions.m (100%) rename platform/{ios/platform => }/darwin/src/NSValue+MLNAdditions.h (100%) rename platform/{ios/platform => }/darwin/src/NSValue+MLNAdditions.m (100%) rename platform/{ios/platform => }/darwin/src/NSValue+MLNStyleAttributeAdditions.h (100%) rename platform/{ios/platform => }/darwin/src/NSValue+MLNStyleAttributeAdditions.mm (100%) rename platform/{ios/platform => }/darwin/test/MLNAttributionInfoTests.m (100%) rename platform/{ios/platform => }/darwin/test/MLNClockDirectionFormatterTests.m (100%) rename platform/{ios/platform => }/darwin/test/MLNCodingTests.mm (100%) rename platform/{ios/platform => }/darwin/test/MLNCompassDirectionFormatterTests.m (100%) rename platform/{ios/platform => }/darwin/test/MLNComputedShapeSourceTests.m (100%) rename platform/{ios/platform => }/darwin/test/MLNCoordinateFormatterTests.m (100%) rename platform/{ios/platform => }/darwin/test/MLNDistanceFormatterTests.m (100%) rename platform/{ios/platform => }/darwin/test/MLNDocumentationExampleTests.swift (100%) rename platform/{ios/platform => }/darwin/test/MLNDocumentationGuideTests.swift (100%) rename platform/{ios/platform => }/darwin/test/MLNExpressionTests.mm (100%) rename platform/{ios/platform => }/darwin/test/MLNFeatureTests.mm (100%) rename platform/{ios/platform => }/darwin/test/MLNGeometryTests.mm (100%) rename platform/{ios/platform => }/darwin/test/MLNHeatmapColorTests.mm (100%) rename platform/{ios/platform => }/darwin/test/MLNImageSourceTests.m (100%) rename platform/{ios/platform => }/darwin/test/MLNImageTests.mm (100%) rename platform/{ios/platform => }/darwin/test/MLNLightTest.mm.ejs (100%) rename platform/{ios/platform => }/darwin/test/MLNMapCameraTests.m (100%) rename platform/{ios/platform => }/darwin/test/MLNMapProjectionTests.m (100%) rename platform/{ios/platform => }/darwin/test/MLNMapSnapshotterTests.m (100%) rename platform/{ios/platform => }/darwin/test/MLNMapViewTests.m (100%) rename platform/{ios/platform => }/darwin/test/MLNNSDateAdditionsTests.mm (100%) rename platform/{ios/platform => }/darwin/test/MLNNSStringAdditionsTests.m (100%) rename platform/{ios/platform => }/darwin/test/MLNOfflinePackTests.mm (100%) rename platform/{ios/platform => }/darwin/test/MLNOfflineRegionTests.m (100%) rename platform/{ios/platform => }/darwin/test/MLNOfflineStorageTests.mm (100%) rename platform/{ios/platform => }/darwin/test/MLNPredicateTests.mm (100%) rename platform/{ios/platform => }/darwin/test/MLNRendererConfigurationTests.m (100%) rename platform/{ios/platform => }/darwin/test/MLNResourceTests.mm (100%) rename platform/{ios/platform => }/darwin/test/MLNSDKTestHelpers.swift (100%) rename platform/{ios/platform => }/darwin/test/MLNShapeSourceTests.mm (100%) rename platform/{ios/platform => }/darwin/test/MLNSourceQueryTests.m (100%) rename platform/{ios/platform => }/darwin/test/MLNStyleLayerTests.h (100%) rename platform/{ios/platform => }/darwin/test/MLNStyleLayerTests.m (100%) rename platform/{ios/platform => }/darwin/test/MLNStyleLayerTests.mm.ejs (100%) rename platform/{ios/platform => }/darwin/test/MLNStyleTests.mm (100%) rename platform/{ios/platform => }/darwin/test/MLNTestAssertionHandler.h (100%) rename platform/{ios/platform => }/darwin/test/MLNTestAssertionHandler.m (100%) rename platform/{ios/platform => }/darwin/test/MLNTestUtility.h (100%) rename platform/{ios/platform => }/darwin/test/MLNTileSetTests.mm (100%) rename platform/{ios/platform => }/darwin/test/Media.xcassets/Contents.json (100%) rename platform/{ios/platform => }/darwin/test/Media.xcassets/Fixtures/Contents.json (100%) rename platform/{ios/platform => }/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/Contents.json (100%) rename platform/{ios/platform => }/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/PingFang.imageset/Contents.json (100%) rename platform/{ios/platform => }/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/PingFang.imageset/actualImage.png (100%) rename platform/{ios/platform => }/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/PingFang.imageset/expected.png (100%) rename platform/{ios/platform => }/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/background.imageset/Contents.json (100%) rename platform/{ios/platform => }/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/background.imageset/background.png (100%) rename platform/{ios/platform => }/darwin/test/Media.xcassets/RadarImage.imageset/Contents.json (100%) rename platform/{ios/platform => }/darwin/test/Media.xcassets/RadarImage.imageset/radar.png (100%) rename platform/{ios/platform => }/darwin/test/Media.xcassets/TrackingLocationMask.imageset/Contents.json (100%) rename platform/{ios/platform => }/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png (100%) rename platform/{ios/platform => }/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png (100%) rename platform/{ios/platform => }/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png (100%) rename platform/{ios/platform => }/darwin/test/amsterdam.geojson (100%) rename platform/{ios/platform => }/darwin/test/one-liner.json (100%) rename platform/{ios/platform => }/darwin/test/test-Bridging-Header.h (100%) delete mode 100644 platform/ios/.cmake-format delete mode 100644 platform/ios/CMakeLists.txt rename platform/ios/{platform/ios => }/Documentation.docc/Documentation.md (100%) rename platform/ios/{platform/ios/Integration Test Harness => Integration_Test_Harness}/AppDelegate.h (100%) rename platform/ios/{platform/ios/Integration Test Harness => Integration_Test_Harness}/AppDelegate.m (100%) rename platform/ios/{platform/ios/Integration Test Harness => Integration_Test_Harness}/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename platform/ios/{platform/ios/Integration Test Harness => Integration_Test_Harness}/Base.lproj/LaunchScreen.storyboard (100%) rename platform/ios/{platform/ios/Integration Test Harness => Integration_Test_Harness}/Info.plist (100%) rename platform/ios/{platform/ios/Integration Test Harness => Integration_Test_Harness}/main.m (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/Annotation Tests/MLNAnnotationViewIntegrationTests.mm (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/Camera Tests/MLNCameraTransitionFinishTests.mm (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/Camera Tests/MLNCameraTransitionTests.mm (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/Info.plist (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/MBGLIntegrationTests.mm (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/MLNIntegrationTestCase.h (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/MLNIntegrationTestCase.m (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/MLNMapViewIntegrationTest.h (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/MLNMapViewIntegrationTest.m (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/MLNMapViewPendingBlockTests.m (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/MLNNetworkConfigurationIntegrationTests.mm (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/MLNShapeSourceTests.m (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/MLNSourceTests.swift (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/MLNStyleLayerIntegrationTests.m (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/MLNStyleURLIntegrationTest.m (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/MLNTestLocationManager.h (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/MLNTestLocationManager.m (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/Snapshotter Tests/MLNMapSnapshotterSwiftTests.swift (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/Snapshotter Tests/MLNMapSnapshotterTest.m (100%) rename platform/ios/{platform/ios/Integration Tests => Integration_Tests}/integration-Bridging-Header.h (100%) rename platform/ios/{platform/ios => }/Mapbox-iOS-SDK-snapshot-dynamic.podspec (100%) rename platform/ios/{platform/ios => }/Mapbox-iOS-SDK-stripped.podspec (100%) rename platform/ios/{platform/ios => }/Mapbox-iOS-SDK.podspec (100%) rename platform/ios/{platform/ios => }/Mapbox.playground/Contents.swift (100%) rename platform/ios/{platform/ios => }/Mapbox.playground/contents.xcplayground (100%) rename platform/ios/{platform/ios => }/Mapbox.playground/playground.xcworkspace/contents.xcworkspacedata (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/AppIcon.appiconset/Icon-1024.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/AppIcon.appiconset/Icon-40.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/AppIcon.appiconset/Icon-76.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/AppIcon.appiconset/Icon-Small.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/Contents.json (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/TrackingHeadingMask.imageset/Contents.json (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@2x.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@3x.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/TrackingLocationMask.imageset/Contents.json (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/TrackingLocationOffMask.imageset/Contents.json (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@2x.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@3x.png (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/settings.imageset/Contents.json (100%) rename platform/ios/{platform/ios => }/app/Assets.xcassets/settings.imageset/settings.pdf (100%) rename platform/ios/{platform/ios => }/app/Base.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/Info.plist (100%) rename platform/ios/{platform/ios => }/app/LaunchScreen.storyboard (100%) rename platform/ios/{platform/ios => }/app/MBXAnnotationView.h (100%) rename platform/ios/{platform/ios => }/app/MBXAnnotationView.m (100%) rename platform/ios/{platform/ios => }/app/MBXAppDelegate.h (100%) rename platform/ios/{platform/ios => }/app/MBXAppDelegate.m (100%) rename platform/ios/{platform/ios => }/app/MBXCustomCalloutView.h (100%) rename platform/ios/{platform/ios => }/app/MBXCustomCalloutView.m (100%) rename platform/ios/{platform/ios => }/app/MBXCustomLocationViewController.h (100%) rename platform/ios/{platform/ios => }/app/MBXCustomLocationViewController.m (100%) rename platform/ios/{platform/ios => }/app/MBXEmbeddedMapViewController.h (100%) rename platform/ios/{platform/ios => }/app/MBXEmbeddedMapViewController.m (100%) rename platform/ios/{platform/ios => }/app/MBXFrameTimeGraphView.h (100%) rename platform/ios/{platform/ios => }/app/MBXFrameTimeGraphView.m (100%) rename platform/ios/{platform/ios => }/app/MBXOfflinePacksTableViewController.h (100%) rename platform/ios/{platform/ios => }/app/MBXOfflinePacksTableViewController.m (100%) rename platform/ios/{platform/ios => }/app/MBXOrnamentsViewController.h (100%) rename platform/ios/{platform/ios => }/app/MBXOrnamentsViewController.m (100%) rename platform/ios/{platform/ios => }/app/MBXSnapshotsViewController.h (100%) rename platform/ios/{platform/ios => }/app/MBXSnapshotsViewController.m (100%) rename platform/ios/{platform/ios => }/app/MBXState.h (100%) rename platform/ios/{platform/ios => }/app/MBXState.m (100%) rename platform/ios/{platform/ios => }/app/MBXStateManager.h (100%) rename platform/ios/{platform/ios => }/app/MBXStateManager.m (100%) rename platform/ios/{platform/ios => }/app/MBXUserLocationAnnotationView.h (100%) rename platform/ios/{platform/ios => }/app/MBXUserLocationAnnotationView.m (100%) rename platform/ios/{platform/ios => }/app/MBXViewController.h (100%) rename platform/ios/{platform/ios => }/app/MBXViewController.m (100%) rename platform/ios/{platform/ios => }/app/MLNMapView_Experimental.h (100%) rename platform/ios/{platform/ios => }/app/Main.storyboard (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/Base.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/Root.plist (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/ar.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/bg.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/ca.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/cs.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/da.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/de.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/en.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/es.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/fi.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/fr.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/gl.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/he.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/hu.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/it.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/ko.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/lt.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/nl.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/pl.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/pt-BR.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/pt-PT.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/ru.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/sv.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/uk.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/vi.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/zh-Hans.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/Settings.bundle/zh-Hant.lproj/Root.strings (100%) rename platform/ios/{platform/ios => }/app/ar.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/bg.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/ca.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/cs.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/da.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/de.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/es.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/fi.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/fill_filter_style.json (100%) rename platform/ios/{platform/ios => }/app/fr.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/gl.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/he.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/hu.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/insert_access_token.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/app/ja.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/ko.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/line_filter_style.json (100%) rename platform/ios/{platform/ios => }/app/lt.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/main.m (100%) rename platform/ios/{platform/ios => }/app/missing_icon.json (100%) rename platform/ios/{platform/ios => }/app/nl.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/numeric_filter_style.json (100%) rename platform/ios/{platform/ios => }/app/pl.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/points.geojson (100%) rename platform/ios/{platform/ios => }/app/polyline.geojson (100%) rename platform/ios/{platform/ios => }/app/pt-BR.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/pt-PT.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/ru.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/simple_route.json (94%) rename platform/ios/{platform/ios => }/app/sv.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/threestates.geojson (100%) rename platform/ios/{platform/ios => }/app/uk.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/vi.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/zh-Hans.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/app/zh-Hant.lproj/Localizable.strings (100%) rename platform/ios/{platform/macos/app/Base.lproj/Localizable.strings => bazel/BUILD.bazel} (100%) create mode 100644 platform/ios/bazel/files.bzl create mode 100644 platform/ios/bazel/provisioning.bzl rename platform/ios/{platform/ios/bench UITests => bench_UITests}/Info.plist (100%) rename platform/ios/{platform/ios/bench UITests => bench_UITests}/bench_UITests.swift (100%) rename platform/ios/{platform/ios => }/benchmark/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename platform/ios/{platform/ios => }/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-1.png (100%) rename platform/ios/{platform/ios => }/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-2.png (100%) rename platform/ios/{platform/ios => }/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-3.png (100%) rename platform/ios/{platform/ios => }/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-4.png (100%) rename platform/ios/{platform/ios => }/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40.png (100%) rename platform/ios/{platform/ios => }/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png (100%) rename platform/ios/{platform/ios => }/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png (100%) rename platform/ios/{platform/ios => }/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76.png (100%) rename platform/ios/{platform/ios => }/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png (100%) rename platform/ios/{platform/ios => }/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small.png (100%) rename platform/ios/{platform/ios => }/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png (100%) rename platform/ios/{platform/ios => }/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png (100%) rename platform/ios/{platform/ios => }/benchmark/Assets.xcassets/AppIcon.appiconset/Icon.png (100%) rename platform/ios/{platform/ios => }/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png (100%) rename platform/ios/{platform/ios => }/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png (100%) rename platform/ios/{platform/ios => }/benchmark/Base.lproj/LaunchScreen.storyboard (100%) rename platform/ios/{platform/ios => }/benchmark/Info.plist (100%) rename platform/ios/{platform/ios => }/benchmark/MBXBenchAppDelegate.h (100%) rename platform/ios/{platform/ios => }/benchmark/MBXBenchAppDelegate.m (100%) rename platform/ios/{platform/ios => }/benchmark/MBXBenchViewController.h (100%) rename platform/ios/{platform/ios => }/benchmark/MBXBenchViewController.mm (100%) rename platform/ios/{platform/ios => }/benchmark/assets/download.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/benchmark/assets/glyphs/download.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/benchmark/assets/readme.txt (100%) rename platform/ios/{platform/ios => }/benchmark/assets/sprites/sprite.json (100%) rename platform/ios/{platform/ios => }/benchmark/assets/sprites/sprite.png (100%) rename platform/ios/{platform/ios => }/benchmark/assets/sprites/sprite@2x.json (100%) rename platform/ios/{platform/ios => }/benchmark/assets/sprites/sprite@2x.png (100%) rename platform/ios/{platform/ios => }/benchmark/assets/styles/streets.json (100%) rename platform/ios/{platform/ios => }/benchmark/assets/tiles/download.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/benchmark/assets/tiles/openmaptiles.json (100%) rename platform/ios/{platform/ios => }/benchmark/insert_access_token.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/benchmark/locations.cpp (100%) rename platform/ios/{platform/ios => }/benchmark/locations.hpp (100%) rename platform/ios/{platform/ios => }/benchmark/main.m (100%) delete mode 100644 platform/ios/ccache-c.in delete mode 100644 platform/ios/ccache-cxx.in delete mode 100644 platform/ios/ccache.cmake rename platform/ios/{platform/ios => }/core-files.json (100%) rename platform/ios/{platform/ios => }/docs/guides/Gesture Recognizers.md (100%) rename platform/ios/{platform/ios => }/docs/guides/Info.plist Keys.md (100%) rename platform/ios/{platform/ios => }/docs/img/screenshot.png (100%) rename platform/ios/{platform/ios => }/docs/img/user-interaction/RotateSydney.gif (100%) rename platform/ios/{platform/ios => }/docs/img/user-interaction/quickzoom.gif (100%) rename platform/ios/{platform/ios => }/docs/pod-README.md (100%) rename platform/ios/{platform/ios => }/framework/Info-static.plist (100%) rename platform/ios/{platform/ios => }/framework/Info.plist (100%) rename platform/ios/{platform/ios => }/framework/Mapbox-static.h (100%) rename platform/ios/{platform/ios => }/framework/modulemap (100%) rename platform/ios/{platform/ios => }/framework/strip-frameworks.sh (100%) mode change 100755 => 100644 delete mode 100644 platform/ios/ios-test-runners.cmake delete mode 100644 platform/ios/ios.cmake rename platform/ios/{platform/ios => }/iosapp-UITests/BUILD.bazel (73%) rename platform/ios/{platform/ios => }/iosapp-UITests/Info.plist (100%) rename platform/ios/{platform/ios => }/iosapp-UITests/XCTestCase+Extensions.swift (100%) rename platform/ios/{platform/ios => }/iosapp-UITests/iosapp_TestPlan.xctestplan (100%) rename platform/ios/{platform/ios => }/iosapp-UITests/iosapp_UITests.swift (100%) rename platform/ios/{platform/ios => }/jazzy.yml (100%) rename platform/ios/{platform/ios => }/originals/compass.sketch (100%) rename platform/ios/{platform/ios => }/originals/screenshot.sketch (100%) delete mode 100644 platform/ios/platform/darwin/README.md delete mode 100644 platform/ios/platform/darwin/ci.xcconfig delete mode 100644 platform/ios/platform/darwin/include/mbgl/util/image+MLNAdditions.hpp delete mode 100644 platform/ios/platform/darwin/test/BUILD.bazel delete mode 100644 platform/ios/platform/default/src/mbgl/render-test/main.cpp delete mode 100644 platform/ios/platform/ios/CHANGELOG.md delete mode 100644 platform/ios/platform/ios/CONTRIBUTING.md delete mode 100644 platform/ios/platform/ios/INSTALL.md delete mode 100644 platform/ios/platform/ios/README.md delete mode 100644 platform/ios/platform/ios/WorkspaceSettings.xcsettings delete mode 100644 platform/ios/platform/ios/config.cmake delete mode 100644 platform/ios/platform/ios/ios.xcconfig delete mode 100644 platform/ios/platform/ios/ios.xcodeproj/project.pbxproj delete mode 100644 platform/ios/platform/ios/ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme delete mode 100644 platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/Integration Test Harness.xcscheme delete mode 100644 platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/bench.xcscheme delete mode 100644 platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic+static.xcscheme delete mode 100644 platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme delete mode 100644 platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iosapp.xcscheme delete mode 100644 platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/static.xcscheme delete mode 100644 platform/ios/platform/ios/ios.xcworkspace/contents.xcworkspacedata delete mode 100644 platform/ios/platform/ios/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 platform/ios/platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist delete mode 100644 platform/ios/platform/ios/toolchain.cmake delete mode 100644 platform/ios/platform/macos/CHANGELOG.md delete mode 100644 platform/ios/platform/macos/DEVELOPING.md delete mode 100644 platform/ios/platform/macos/INSTALL.md delete mode 100644 platform/ios/platform/macos/README.md delete mode 100644 platform/ios/platform/macos/config.cmake delete mode 100644 platform/ios/platform/macos/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100755 platform/ios/platform/macos/ninja rename platform/ios/{platform/ios => }/resources/Base.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/Images.xcassets/Compass.imageset/Contents.json (100%) rename platform/ios/{platform/ios => }/resources/Images.xcassets/Compass.imageset/compass.pdf (100%) rename platform/ios/{platform/ios => }/resources/Images.xcassets/Contents.json (100%) rename platform/ios/{platform/ios => }/resources/Images.xcassets/default_marker.imageset/Contents.json (100%) rename platform/ios/{platform/ios => }/resources/Images.xcassets/default_marker.imageset/default_marker.pdf (100%) rename platform/ios/{platform/ios => }/resources/Images.xcassets/mapbox.imageset/Contents.json (100%) rename platform/ios/{platform/ios => }/resources/Images.xcassets/mapbox.imageset/mapbox.pdf (100%) rename platform/ios/{platform/ios => }/resources/Images.xcassets/mapbox_helmet.imageset/Contents.json (100%) rename platform/ios/{platform/ios => }/resources/Images.xcassets/mapbox_helmet.imageset/mapbox_helmet.pdf (100%) rename platform/ios/{platform/ios => }/resources/README (100%) rename platform/ios/{platform/ios => }/resources/ar.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/bg.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/bg.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/ca.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/ca.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/cs.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/cs.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/da.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/da.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/de.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/de.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/en.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/es.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/es.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/fr.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/fr.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/gl.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/gl.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/he.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/hu.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/hu.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/ja.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/ko.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/ko.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/lt.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/lt.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/pt-BR.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/pt-BR.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/pt-PT.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/pt-PT.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/ru.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/ru.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/sv.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/sv.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/uk.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/uk.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/vi.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/vi.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/resources/zh-Hans.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/zh-Hant.lproj/Localizable.strings (100%) rename platform/ios/{platform/ios => }/resources/zh-Hant.lproj/Localizable.stringsdict (100%) rename platform/ios/{platform/ios => }/scripts/bazel-package.sh (92%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/scripts/bazel-xcodeproj.sh (79%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/scripts/deploy-packages.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/scripts/deploy-snapshot.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/scripts/deploy-swift-package.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/scripts/deploy-to-cocoapods.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/scripts/document.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/scripts/install-packaging-dependencies.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/scripts/ios-code-coverage.sh (100%) mode change 100755 => 100644 create mode 100755 platform/ios/scripts/lint-plists.sh rename platform/ios/{platform/ios => }/scripts/lint-podspecs.js (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/scripts/metrics.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/scripts/package.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/scripts/publish.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/scripts/release-notes-github.md.ejs (100%) rename platform/ios/{platform/ios => }/scripts/release-notes-jazzy.md.ejs (100%) rename platform/ios/{platform/ios => }/scripts/release-notes.js (100%) mode change 100755 => 100644 delete mode 100644 platform/ios/scripts/standalone.cmake rename platform/ios/{platform/ios => }/scripts/swift_package_template.swift (100%) rename platform/ios/{platform/ios => }/scripts/update-swift-package.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/scripts/update-version.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/scripts/validate-framework-zip.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/scripts/xcpackage.sh (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/sdk-files.json (100%) rename platform/ios/{platform/ios => }/src/MLNAnnotationContainerView.h (100%) rename platform/ios/{platform/ios => }/src/MLNAnnotationContainerView.m (100%) rename platform/ios/{platform/ios => }/src/MLNAnnotationContainerView_Private.h (100%) rename platform/ios/{platform/ios => }/src/MLNAnnotationImage.h (100%) rename platform/ios/{platform/ios => }/src/MLNAnnotationImage.m (100%) rename platform/ios/{platform/ios => }/src/MLNAnnotationImage_Private.h (100%) rename platform/ios/{platform/ios => }/src/MLNAnnotationView.h (100%) rename platform/ios/{platform/ios => }/src/MLNAnnotationView.mm (100%) rename platform/ios/{platform/ios => }/src/MLNAnnotationView_Private.h (100%) rename platform/ios/{platform/ios => }/src/MLNCalloutView.h (100%) rename platform/ios/{platform/ios => }/src/MLNCameraChangeReason.h (100%) rename platform/ios/{platform/ios => }/src/MLNCompactCalloutView.h (100%) rename platform/ios/{platform/ios => }/src/MLNCompactCalloutView.m (100%) rename platform/ios/{platform/ios => }/src/MLNCompassButton.h (100%) rename platform/ios/{platform/ios => }/src/MLNCompassButton.mm (100%) rename platform/ios/{platform/ios => }/src/MLNCompassButton_Private.h (100%) rename platform/ios/{platform/ios => }/src/MLNFaux3DUserLocationAnnotationView.h (100%) rename platform/ios/{platform/ios => }/src/MLNFaux3DUserLocationAnnotationView.mm (100%) rename platform/ios/{platform/ios => }/src/MLNMapAccessibilityElement.h (100%) rename platform/ios/{platform/ios => }/src/MLNMapAccessibilityElement.mm (100%) rename platform/ios/{platform/ios => }/src/MLNMapProjection.h (100%) rename platform/ios/{platform/ios => }/src/MLNMapProjection.mm (100%) rename platform/ios/{platform/ios => }/src/MLNMapView+IBAdditions.h (100%) rename platform/ios/{platform/ios => }/src/MLNMapView+Impl.h (100%) rename platform/ios/{platform/ios => }/src/MLNMapView+Impl.mm (100%) rename platform/ios/{platform/ios => }/src/MLNMapView+OpenGL.h (100%) rename platform/ios/{platform/ios => }/src/MLNMapView+OpenGL.mm (100%) rename platform/ios/{platform/ios => }/src/MLNMapView.h (100%) rename platform/ios/{platform/ios => }/src/MLNMapView.mm (100%) rename platform/ios/{platform/ios => }/src/MLNMapViewDelegate.h (100%) rename platform/ios/{platform/ios => }/src/MLNMapView_Private.h (100%) rename platform/ios/{platform/ios => }/src/MLNScaleBar.h (100%) rename platform/ios/{platform/ios => }/src/MLNScaleBar.mm (100%) rename platform/ios/{platform/ios => }/src/MLNUserLocation.h (100%) rename platform/ios/{platform/ios => }/src/MLNUserLocation.m (100%) rename platform/ios/{platform/ios => }/src/MLNUserLocationAnnotationView.h (100%) rename platform/ios/{platform/ios => }/src/MLNUserLocationAnnotationView.m (100%) rename platform/ios/{platform/ios => }/src/MLNUserLocationAnnotationViewStyle.h (100%) rename platform/ios/{platform/ios => }/src/MLNUserLocationAnnotationViewStyle.m (100%) rename platform/ios/{platform/ios => }/src/MLNUserLocationAnnotationView_Private.h (100%) rename platform/ios/{platform/ios => }/src/MLNUserLocationHeadingArrowLayer.h (100%) rename platform/ios/{platform/ios => }/src/MLNUserLocationHeadingArrowLayer.m (100%) rename platform/ios/{platform/ios => }/src/MLNUserLocationHeadingBeamLayer.h (100%) rename platform/ios/{platform/ios => }/src/MLNUserLocationHeadingBeamLayer.m (100%) rename platform/ios/{platform/ios => }/src/MLNUserLocationHeadingIndicator.h (100%) rename platform/ios/{platform/ios => }/src/MLNUserLocation_Private.h (100%) rename platform/ios/{platform/ios => }/src/Mapbox.h (100%) rename platform/ios/{platform/ios => }/src/NSOrthography+MLNAdditions.h (100%) rename platform/ios/{platform/ios => }/src/NSOrthography+MLNAdditions.m (100%) rename platform/ios/{platform/ios => }/src/UIColor+MLNAdditions.h (100%) rename platform/ios/{platform/ios => }/src/UIColor+MLNAdditions.mm (100%) rename platform/ios/{platform/ios => }/src/UIDevice+MLNAdditions.h (100%) rename platform/ios/{platform/ios => }/src/UIDevice+MLNAdditions.m (100%) rename platform/ios/{platform/ios => }/src/UIImage+MLNAdditions.h (100%) rename platform/ios/{platform/ios => }/src/UIImage+MLNAdditions.mm (100%) rename platform/ios/{platform/ios => }/src/UIView+MLNAdditions.h (100%) rename platform/ios/{platform/ios => }/src/UIView+MLNAdditions.m (100%) rename platform/ios/{platform/ios => }/src/UIViewController+MLNAdditions.h (100%) rename platform/ios/{platform/ios => }/src/UIViewController+MLNAdditions.m (100%) rename platform/ios/{platform/ios => }/test/BUILD.bazel (74%) rename platform/ios/{platform/ios => }/test/CI-Expressions.xctestplan (100%) rename platform/ios/{platform/ios => }/test/CI.xctestplan (100%) rename platform/ios/{platform/ios => }/test/Info.plist (100%) rename platform/ios/{platform/ios => }/test/MLNAnnotationViewIntegrationTests.swift (100%) rename platform/ios/{platform/ios => }/test/MLNAnnotationViewTests.m (100%) rename platform/ios/{platform/ios => }/test/MLNMapAccessibilityElementTests.m (100%) rename platform/ios/{platform/ios => }/test/MLNMapViewCompassViewTests.mm (100%) rename platform/ios/{platform/ios => }/test/MLNMapViewContentInsetTests.m (100%) rename platform/ios/{platform/ios => }/test/MLNMapViewDelegateIntegrationTests.swift (100%) rename platform/ios/{platform/ios => }/test/MLNMapViewDirectionTests.mm (100%) rename platform/ios/{platform/ios => }/test/MLNMapViewGestureRecognizerTests.mm (100%) rename platform/ios/{platform/ios => }/test/MLNMapViewLayoutTests.m (100%) rename platform/ios/{platform/ios => }/test/MLNMapViewPitchTests.m (100%) rename platform/ios/{platform/ios => }/test/MLNMapViewScaleBarTests.m (100%) rename platform/ios/{platform/ios => }/test/MLNMapViewZoomTests.mm (100%) rename platform/ios/{platform/ios => }/test/MLNMockGestureRecognizers.h (100%) rename platform/ios/{platform/ios => }/test/MLNMockGestureRecognizers.m (100%) rename platform/ios/{platform/ios => }/test/MLNNSOrthographyAdditionsTests.m (100%) rename platform/ios/{platform/ios => }/test/MLNNetworkConfigurationTests.m (100%) rename platform/ios/{platform/ios => }/vendor/BUILD.bazel (73%) rename platform/ios/{platform/ios => }/vendor/SMCalloutView/SMCalloutView.h (100%) mode change 100755 => 100644 rename platform/ios/{platform/ios => }/vendor/SMCalloutView/SMCalloutView.m (100%) mode change 100755 => 100644 create mode 100644 platform/macos/BUILD.bazel rename platform/{ios/platform => }/macos/ExportOptions.plist (100%) rename platform/{ios/platform => }/macos/Mapbox-macOS-SDK-symbols.podspec (100%) rename platform/{ios/platform => }/macos/Mapbox-macOS-SDK.podspec (100%) rename platform/{ios/platform => }/macos/WorkspaceSettings.xcsettings (100%) rename platform/{ios/platform => }/macos/app/AppDelegate.h (100%) rename platform/{ios/platform => }/macos/app/AppDelegate.m (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128.png (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128@2x.png (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16.png (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16@2x.png (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256.png (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256@2x.png (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32.png (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32@2x.png (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512.png (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512@2x.png (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Contents.json (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Layers/Contents.json (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/Contents.json (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/fill-extrusion.pdf (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Layers/heatmap.imageset/Contents.json (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Layers/heatmap.imageset/heatmap.pdf (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Layers/hillshade.imageset/Contents.json (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Layers/hillshade.imageset/hillshade.pdf (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Radar/Contents.json (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Radar/southeast_0.imageset/Contents.json (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Radar/southeast_0.imageset/southeast_radar_0.png (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Radar/southeast_1.imageset/Contents.json (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Radar/southeast_1.imageset/southeast_radar_1.png (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Radar/southeast_2.imageset/Contents.json (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Radar/southeast_2.imageset/southeast_radar_2.png (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Radar/southeast_3.imageset/Contents.json (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/Radar/southeast_3.imageset/southeast_radar_3.png (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/ohio.imageset/Contents.json (100%) rename platform/{ios/platform => }/macos/app/Assets.xcassets/ohio.imageset/ohio.pdf (100%) rename platform/{ios/platform/macos/app/ar.lproj => macos/app/Base.lproj}/Localizable.strings (100%) rename platform/{ios/platform => }/macos/app/Base.lproj/MainMenu.xib (100%) rename platform/{ios/platform => }/macos/app/Base.lproj/MapDocument.xib (100%) rename platform/{ios/platform => }/macos/app/Credits.rtf (100%) rename platform/{ios/platform => }/macos/app/DroppedPinAnnotation.h (100%) rename platform/{ios/platform => }/macos/app/DroppedPinAnnotation.m (100%) rename platform/{ios/platform => }/macos/app/Info.plist (100%) rename platform/{ios/platform => }/macos/app/LocationCoordinate2DTransformer.h (100%) rename platform/{ios/platform => }/macos/app/LocationCoordinate2DTransformer.m (100%) rename platform/{ios/platform => }/macos/app/MLNStyle+MBXAdditions.h (100%) rename platform/{ios/platform => }/macos/app/MLNStyle+MBXAdditions.m (100%) rename platform/{ios/platform => }/macos/app/MapDocument.h (100%) rename platform/{ios/platform => }/macos/app/MapDocument.m (100%) rename platform/{ios/platform => }/macos/app/OfflinePackNameValueTransformer.h (100%) rename platform/{ios/platform => }/macos/app/OfflinePackNameValueTransformer.m (100%) rename platform/{ios/platform => }/macos/app/StyleLayerIconTransformer.h (100%) rename platform/{ios/platform => }/macos/app/StyleLayerIconTransformer.m (100%) rename platform/{ios/platform => }/macos/app/TimeIntervalTransformer.h (100%) rename platform/{ios/platform => }/macos/app/TimeIntervalTransformer.m (100%) rename platform/{ios/platform/macos/app/bg.lproj => macos/app/ar.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/ca.lproj => macos/app/bg.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/cs.lproj => macos/app/ca.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/da.lproj => macos/app/cs.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/de.lproj => macos/app/da.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/es.lproj => macos/app/de.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/fi.lproj => macos/app/es.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/fr.lproj => macos/app/fi.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/gl.lproj => macos/app/fr.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/he.lproj => macos/app/gl.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/hu.lproj => macos/app/he.lproj}/Localizable.strings (100%) rename platform/{ios/platform => }/macos/app/heatmap.json (100%) rename platform/{ios/platform/macos/app/ja.lproj => macos/app/hu.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/ko.lproj => macos/app/ja.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/lt.lproj => macos/app/ko.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/nl.lproj => macos/app/lt.lproj}/Localizable.strings (100%) rename platform/{ios/platform => }/macos/app/main.m (100%) rename platform/{ios/platform/macos/app/pl.lproj => macos/app/nl.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/pt-BR.lproj => macos/app/pl.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/pt-PT.lproj => macos/app/pt-BR.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/ru.lproj => macos/app/pt-PT.lproj}/Localizable.strings (100%) rename platform/{ios/platform => }/macos/app/resources/background.svg (100%) rename platform/{ios/platform => }/macos/app/resources/circle.svg (100%) rename platform/{ios/platform => }/macos/app/resources/fill-extrusion.svg (100%) rename platform/{ios/platform => }/macos/app/resources/fill.svg (100%) rename platform/{ios/platform => }/macos/app/resources/heatmap.svg (100%) rename platform/{ios/platform => }/macos/app/resources/hillshade.svg (100%) rename platform/{ios/platform => }/macos/app/resources/symbol.svg (100%) rename platform/{ios/platform/macos/app/sv.lproj => macos/app/ru.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/uk.lproj => macos/app/sv.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/vi.lproj => macos/app/uk.lproj}/Localizable.strings (100%) rename platform/{ios/platform/macos/app/zh-Hans.lproj => macos/app/vi.lproj}/Localizable.strings (100%) rename platform/{ios/platform => }/macos/app/wms.json (100%) rename platform/{ios/platform/macos/app/zh-Hant.lproj => macos/app/zh-Hans.lproj}/Localizable.strings (100%) create mode 100644 platform/macos/app/zh-Hant.lproj/Localizable.strings create mode 100644 platform/macos/bazel/files.bzl rename platform/{ios/platform => }/macos/core-files.json (100%) rename platform/{ios/platform => }/macos/docs/doc-README.md (100%) rename platform/{ios/platform => }/macos/docs/guides/Info.plist Keys.md (100%) rename platform/{ios/platform => }/macos/docs/img/screenshot.jpg (100%) rename platform/{ios/platform => }/macos/docs/pod-README.md (100%) rename platform/{ios/platform => }/macos/jazzy.yml (100%) delete mode 100644 platform/macos/macos.cmake rename platform/{ios/platform => }/macos/macos.xcconfig (100%) rename platform/{ios/platform => }/macos/macos.xcodeproj/project.pbxproj (100%) rename platform/{ios/platform => }/macos/macos.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) rename platform/{ios/platform => }/macos/macos.xcodeproj/xcshareddata/xcschemes/CI.xcscheme (100%) rename platform/{ios/platform => }/macos/macos.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme (100%) rename platform/{ios/platform => }/macos/macos.xcodeproj/xcshareddata/xcschemes/macosapp.xcscheme (100%) rename platform/{ios/platform => }/macos/macos.xcworkspace/contents.xcworkspacedata (100%) rename platform/{ios/platform/ios/ios.xcodeproj/project.xcworkspace => macos/macos.xcworkspace}/xcshareddata/IDEWorkspaceChecks.plist (100%) rename platform/{ios/platform => }/macos/macos.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist (100%) rename platform/{ios/platform => }/macos/scripts/deploy-packages.sh (100%) mode change 100755 => 100644 rename platform/{ios/platform => }/macos/scripts/document.sh (100%) mode change 100755 => 100644 rename platform/{ios/platform => }/macos/scripts/metrics.sh (100%) mode change 100755 => 100644 rename platform/{ios/platform => }/macos/scripts/package.sh (100%) mode change 100755 => 100644 rename platform/{ios/platform => }/macos/scripts/release-notes-github.md.ejs (100%) rename platform/{ios/platform => }/macos/scripts/release-notes-jazzy.md.ejs (100%) rename platform/{ios/platform => }/macos/scripts/release-notes.js (100%) mode change 100755 => 100644 rename platform/{ios/platform => }/macos/scripts/update-version.sh (100%) mode change 100755 => 100644 rename platform/{ios/platform => }/macos/sdk-files.json (100%) rename platform/{ios/platform => }/macos/sdk/Base.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/Base.lproj/MLNAnnotationCallout.xib (100%) rename platform/{ios/platform => }/macos/sdk/Info.plist (100%) rename platform/{ios/platform => }/macos/sdk/ar.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/bg.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/ca.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/cs.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/da.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/de.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/default_marker.pdf (100%) rename platform/{ios/platform => }/macos/sdk/es.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/fi.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/fr.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/gl.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/he.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/hu.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/ja.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/lt.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/mapbox.pdf (100%) rename platform/{ios/platform => }/macos/sdk/mapbox_helmet.pdf (100%) rename platform/{ios/platform => }/macos/sdk/nl.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/pl.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/pt-BR.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/pt-PT.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/ru.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/sv.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/uk.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/vi.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/zh-Hans.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/sdk/zh-Hant.lproj/Localizable.strings (100%) rename platform/{ios/platform => }/macos/src/MLNAnnotationImage.h (100%) rename platform/{ios/platform => }/macos/src/MLNAnnotationImage.m (100%) rename platform/{ios/platform => }/macos/src/MLNAnnotationImage_Private.h (100%) rename platform/{ios/platform => }/macos/src/MLNAttributionButton.h (100%) rename platform/{ios/platform => }/macos/src/MLNAttributionButton.mm (100%) rename platform/{ios/platform => }/macos/src/MLNCompassCell.h (100%) rename platform/{ios/platform => }/macos/src/MLNCompassCell.m (100%) rename platform/{ios/platform => }/macos/src/MLNMapView+IBAdditions.h (100%) rename platform/{ios/platform => }/macos/src/MLNMapView+IBAdditions.mm (100%) rename platform/{ios/platform => }/macos/src/MLNMapView+Impl.h (100%) rename platform/{ios/platform => }/macos/src/MLNMapView+Impl.mm (100%) rename platform/{ios/platform => }/macos/src/MLNMapView+OpenGL.h (86%) rename platform/{ios/platform => }/macos/src/MLNMapView+OpenGL.mm (100%) rename platform/{ios/platform => }/macos/src/MLNMapView.h (100%) rename platform/{ios/platform => }/macos/src/MLNMapView.mm (100%) rename platform/{ios/platform => }/macos/src/MLNMapViewDelegate.h (100%) rename platform/{ios/platform => }/macos/src/MLNMapView_Private.h (100%) rename platform/{ios/platform => }/macos/src/MLNOpenGLLayer.h (100%) rename platform/{ios/platform => }/macos/src/MLNOpenGLLayer.mm (100%) rename platform/{ios/platform => }/macos/src/Mapbox.h (100%) rename platform/{ios/platform => }/macos/src/NSColor+MLNAdditions.h (100%) rename platform/{ios/platform => }/macos/src/NSColor+MLNAdditions.mm (100%) rename platform/{ios/platform => }/macos/src/NSImage+MLNAdditions.h (100%) rename platform/{ios/platform => }/macos/src/NSImage+MLNAdditions.mm (100%) rename platform/{ios/platform => }/macos/src/NSProcessInfo+MLNAdditions.h (100%) rename platform/{ios/platform => }/macos/src/NSProcessInfo+MLNAdditions.m (100%) rename platform/{ios/platform => }/macos/test/CI.xctestplan (100%) rename platform/{ios/platform => }/macos/test/Info.plist (100%) rename platform/{ios/platform => }/macos/test/MLNAnnotationTests.m (100%) rename platform/{ios/platform => }/macos/test/MLNAttributionButtonTests.m (100%) rename platform/{ios/platform => }/macos/test/MLNMapViewDelegateIntegrationTests.swift (100%) diff --git a/.github/workflows/ios-ci.yml b/.github/workflows/ios-ci.yml index 3468c034d..5d2108f51 100644 --- a/.github/workflows/ios-ci.yml +++ b/.github/workflows/ios-ci.yml @@ -123,21 +123,19 @@ jobs: ccache --max-size=2G ccache --show-stats - - name: Check debug symbols - run: make darwin-check-public-symbols - - - name: Lint plist files - run: make ios-lint-plist - - run: cp bazel/example_config.bzl bazel/config.bzl - - run: make style-code + - name: Check debug symbols + run: bazel run //platform:check-public-symbols + + - name: Lint plist files + run: bazel run //platform/ios:lint-plists - name: Running iOS tests - run: bazel test //platform/ios/platform/ios/test:ios_test --test_output=errors + run: bazel test //platform/ios/test:ios_test --test_output=errors - name: Running iOS UI tests - run: bazel test //platform/ios/platform/ios/iosapp-UITests:uitest --test_output=errors + run: bazel test //platform/ios/iosapp-UITests:uitest --test_output=errors # size test diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9d4c1a521..697530912 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -8,7 +8,7 @@ repos: hooks: - id: clang-format files: '.*\.(hpp|cpp|h)' - exclude: '(vendor/.*|platform/(ios|darwin)/.*|test/ios/.*|render-test/ios/.*|benchmark/ios/.*)' + exclude: '(vendor/.*|platform/(ios|darwin|macos)/.*|test/ios/.*|render-test/ios/.*|benchmark/ios/.*)' - repo: https://github.com/keith/pre-commit-buildifier rev: 6.1.0.2 hooks: diff --git a/BUILD.bazel b/BUILD.bazel index 638244537..bc6560108 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -1,27 +1,91 @@ load("//bazel:flags.bzl", "CPP_FLAGS", "MAPLIBRE_FLAGS") load("@bazel_skylib//rules:common_settings.bzl", "string_flag") +load( + "//bazel:core.bzl", + "MLN_CORE_HEADERS", + "MLN_CORE_SOURCE", + "MLN_GENERATED_SHADER_HEADERS", + "MLN_GENERATED_STYLE_SOURCE", + "MLN_OPENGL_HEADERS", + "MLN_OPENGL_SOURCE", + "MLN_PRIVATE_GENERATED_STYLE_HEADERS", + "MLN_PUBLIC_GENERATED_STYLE_HEADERS", +) -# This is defined by both -# platform/default/filesource-files.json -# and -# src/core-files.json -# because they have dependencies on each other +# Generate code required by the core +filegroup( + name = "style_data", + srcs = glob( + ["**/*.ejs"], + allow_empty = False, + ), +) + +genrule( + name = "generated_style_code", + srcs = ["style_data"], + outs = MLN_PUBLIC_GENERATED_STYLE_HEADERS + + MLN_PRIVATE_GENERATED_STYLE_HEADERS + + MLN_GENERATED_STYLE_SOURCE, + cmd = "node $(execpath scripts/generate-style-code.js) --root $(RULEDIR)", + tools = ["scripts/generate-style-code.js"], +) + +filegroup( + name = "shader_data", + srcs = ["shaders/manifest.json"] + glob( + ["shaders/*.glsl"], + allow_empty = False, + ), +) + +genrule( + name = "generated_shaders", + srcs = ["shader_data"], + outs = MLN_GENERATED_SHADER_HEADERS, + cmd = "node $(execpath shaders/generate_shader_code.js) --root $(RULEDIR)", + tools = ["shaders/generate_shader_code.js"], +) + +# This header only target strips the __generated__ prefix for the compiler +# search paths, making the location of generated code transparent to the build +cc_library( + name = "mbgl-core-generated-public-artifacts", + srcs = [], + hdrs = MLN_PUBLIC_GENERATED_STYLE_HEADERS + + MLN_GENERATED_SHADER_HEADERS, + visibility = ["//visibility:public"], + deps = [ + ":generated_shaders", + ":generated_style_code", + ], +) + +# ditto, but for private headers (under the src/ path) +cc_library( + name = "mbgl-core-generated-private-artifacts", + srcs = [], + hdrs = MLN_PRIVATE_GENERATED_STYLE_HEADERS, + visibility = ["//visibility:private"], + deps = [ + ":generated_style_code", + ], +) + +# Generated source is inserted directly into the core target, no need to remove +# the prefix from the path. cc_library( name = "mbgl-core", - srcs = glob( - [ - "src/**/*.cpp", - "src/**/*.hpp", - ], - allow_empty = False, - ), - hdrs = glob( - [ - "include/**/*.hpp", - ], - allow_empty = False, - ), + srcs = MLN_CORE_SOURCE + + MLN_GENERATED_STYLE_SOURCE + + MLN_OPENGL_SOURCE, + hdrs = MLN_CORE_HEADERS + + MLN_OPENGL_HEADERS, copts = CPP_FLAGS + MAPLIBRE_FLAGS, + defines = select({ + "//:ios": ["GLES_SILENCE_DEPRECATION=1"], + "//conditions:default": [], + }), includes = [ "include", "src", @@ -31,6 +95,8 @@ cc_library( ], visibility = ["//visibility:public"], deps = [ + ":mbgl-core-generated-private-artifacts", + ":mbgl-core-generated-public-artifacts", "//vendor:boost", "//vendor:csscolorparser", "//vendor:earcut.hpp", @@ -46,7 +112,7 @@ cc_library( "//:ios": [ "//vendor:icu", ], - "//:linux": [], + "//conditions:default": [], }), ) @@ -85,6 +151,13 @@ config_setting( }, ) +config_setting( + name = "windows", + flag_values = { + ":maplibre_platform": "windows", + }, +) + exports_files( [ "LICENSE.md", diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ecfa338a..8a78fd51b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1122,12 +1122,8 @@ if(MLN_WITH_QT) include(${PROJECT_SOURCE_DIR}/platform/qt/qt.cmake) elseif(CMAKE_SYSTEM_NAME STREQUAL Android) include(${PROJECT_SOURCE_DIR}/platform/android/android.cmake) -elseif(CMAKE_SYSTEM_NAME STREQUAL iOS) - include(${PROJECT_SOURCE_DIR}/platform/ios/ios.cmake) elseif(CMAKE_SYSTEM_NAME STREQUAL Linux) include(${PROJECT_SOURCE_DIR}/platform/linux/linux.cmake) -elseif(CMAKE_SYSTEM_NAME STREQUAL Darwin) - include(${PROJECT_SOURCE_DIR}/platform/macos/macos.cmake) elseif(WIN32) include(${PROJECT_SOURCE_DIR}/platform/windows/windows.cmake) else() diff --git a/bazel/core.bzl b/bazel/core.bzl new file mode 100644 index 000000000..b9023b0b3 --- /dev/null +++ b/bazel/core.bzl @@ -0,0 +1,862 @@ +MLN_PUBLIC_GENERATED_STYLE_HEADERS = [ + "include/mbgl/style/layers/circle_layer.hpp", + "include/mbgl/style/layers/fill_layer.hpp", + "include/mbgl/style/layers/line_layer.hpp", + "include/mbgl/style/layers/symbol_layer.hpp", + "include/mbgl/style/layers/heatmap_layer.hpp", + "include/mbgl/style/layers/fill_extrusion_layer.hpp", + "include/mbgl/style/layers/raster_layer.hpp", + "include/mbgl/style/layers/hillshade_layer.hpp", + "include/mbgl/style/layers/background_layer.hpp", + "include/mbgl/style/layers/location_indicator_layer.hpp", + "include/mbgl/style/light.hpp", +] + +MLN_PRIVATE_GENERATED_STYLE_HEADERS = [ + "src/mbgl/style/layers/fill_layer_properties.hpp", + "src/mbgl/style/layers/line_layer_properties.hpp", + "src/mbgl/style/layers/symbol_layer_properties.hpp", + "src/mbgl/style/layers/circle_layer_properties.hpp", + "src/mbgl/style/layers/heatmap_layer_properties.hpp", + "src/mbgl/style/layers/fill_extrusion_layer_properties.hpp", + "src/mbgl/style/layers/raster_layer_properties.hpp", + "src/mbgl/style/layers/hillshade_layer_properties.hpp", + "src/mbgl/style/layers/background_layer_properties.hpp", + "src/mbgl/style/layers/location_indicator_layer_properties.hpp", +] + +MLN_GENERATED_STYLE_SOURCE = [ + "src/mbgl/style/layers/fill_layer_properties.cpp", + "src/mbgl/style/layers/fill_layer.cpp", + "src/mbgl/style/layers/line_layer_properties.cpp", + "src/mbgl/style/layers/line_layer.cpp", + "src/mbgl/style/layers/symbol_layer_properties.cpp", + "src/mbgl/style/layers/symbol_layer.cpp", + "src/mbgl/style/layers/circle_layer_properties.cpp", + "src/mbgl/style/layers/circle_layer.cpp", + "src/mbgl/style/layers/heatmap_layer_properties.cpp", + "src/mbgl/style/layers/heatmap_layer.cpp", + "src/mbgl/style/layers/fill_extrusion_layer_properties.cpp", + "src/mbgl/style/layers/fill_extrusion_layer.cpp", + "src/mbgl/style/layers/raster_layer_properties.cpp", + "src/mbgl/style/layers/raster_layer.cpp", + "src/mbgl/style/layers/hillshade_layer_properties.cpp", + "src/mbgl/style/layers/hillshade_layer.cpp", + "src/mbgl/style/layers/background_layer_properties.cpp", + "src/mbgl/style/layers/background_layer.cpp", + "src/mbgl/style/layers/location_indicator_layer_properties.cpp", + "src/mbgl/style/layers/location_indicator_layer.cpp", + "src/mbgl/style/light.cpp", +] + +MLN_GENERATED_SHADER_HEADERS = [ + "include/mbgl/shaders/shader_source.hpp", + "include/mbgl/shaders/shader_manifest.hpp", + "include/mbgl/shaders/gl/background.hpp", + "include/mbgl/shaders/gl/background_pattern.hpp", + "include/mbgl/shaders/gl/circle.hpp", + "include/mbgl/shaders/gl/clipping_mask.hpp", + "include/mbgl/shaders/gl/collision_box.hpp", + "include/mbgl/shaders/gl/collision_circle.hpp", + "include/mbgl/shaders/gl/debug.hpp", + "include/mbgl/shaders/gl/fill_extrusion_pattern.hpp", + "include/mbgl/shaders/gl/fill_extrusion.hpp", + "include/mbgl/shaders/gl/fill_outline_pattern.hpp", + "include/mbgl/shaders/gl/fill_outline.hpp", + "include/mbgl/shaders/gl/fill_pattern.hpp", + "include/mbgl/shaders/gl/fill.hpp", + "include/mbgl/shaders/gl/heatmap_texture.hpp", + "include/mbgl/shaders/gl/heatmap.hpp", + "include/mbgl/shaders/gl/hillshade_prepare.hpp", + "include/mbgl/shaders/gl/hillshade.hpp", + "include/mbgl/shaders/gl/line_gradient.hpp", + "include/mbgl/shaders/gl/line_pattern.hpp", + "include/mbgl/shaders/gl/line_sdf.hpp", + "include/mbgl/shaders/gl/line.hpp", + "include/mbgl/shaders/gl/prelude.hpp", + "include/mbgl/shaders/gl/raster.hpp", + "include/mbgl/shaders/gl/symbol_icon.hpp", + "include/mbgl/shaders/gl/symbol_sdf_text.hpp", + "include/mbgl/shaders/gl/symbol_sdf_icon.hpp", + "include/mbgl/shaders/gl/symbol_text_and_icon.hpp", +] + +MLN_CORE_SOURCE = [ + "src/mbgl/actor/mailbox.cpp", + "src/mbgl/actor/scheduler.cpp", + "src/mbgl/algorithm/update_renderables.hpp", + "src/mbgl/algorithm/update_tile_masks.hpp", + "src/mbgl/annotation/annotation_manager.cpp", + "src/mbgl/annotation/annotation_manager.hpp", + "src/mbgl/annotation/annotation_source.cpp", + "src/mbgl/annotation/annotation_source.hpp", + "src/mbgl/annotation/annotation_tile.cpp", + "src/mbgl/annotation/annotation_tile.hpp", + "src/mbgl/annotation/fill_annotation_impl.cpp", + "src/mbgl/annotation/fill_annotation_impl.hpp", + "src/mbgl/annotation/line_annotation_impl.cpp", + "src/mbgl/annotation/line_annotation_impl.hpp", + "src/mbgl/annotation/render_annotation_source.cpp", + "src/mbgl/annotation/render_annotation_source.hpp", + "src/mbgl/annotation/shape_annotation_impl.cpp", + "src/mbgl/annotation/shape_annotation_impl.hpp", + "src/mbgl/annotation/symbol_annotation_impl.cpp", + "src/mbgl/annotation/symbol_annotation_impl.hpp", + "src/mbgl/geometry/anchor.hpp", + "src/mbgl/geometry/debug_font_data.hpp", + "src/mbgl/geometry/dem_data.cpp", + "src/mbgl/geometry/dem_data.hpp", + "src/mbgl/geometry/feature_index.cpp", + "src/mbgl/geometry/feature_index.hpp", + "src/mbgl/geometry/line_atlas.cpp", + "src/mbgl/geometry/line_atlas.hpp", + "src/mbgl/gfx/attribute.cpp", + "src/mbgl/gfx/attribute.hpp", + "src/mbgl/gfx/color_mode.hpp", + "src/mbgl/gfx/command_encoder.hpp", + "src/mbgl/gfx/context.hpp", + "src/mbgl/gfx/cull_face_mode.hpp", + "src/mbgl/gfx/debug_group.hpp", + "src/mbgl/gfx/depth_mode.hpp", + "src/mbgl/gfx/draw_mode.hpp", + "src/mbgl/gfx/draw_scope.hpp", + "src/mbgl/gfx/index_buffer.hpp", + "src/mbgl/gfx/index_vector.hpp", + "src/mbgl/gfx/offscreen_texture.hpp", + "src/mbgl/gfx/program.hpp", + "src/mbgl/gfx/render_pass.hpp", + "src/mbgl/gfx/renderbuffer.hpp", + "src/mbgl/gfx/renderer_backend.cpp", + "src/mbgl/gfx/rendering_stats.cpp", + "src/mbgl/gfx/shader_registry.cpp", + "src/mbgl/gfx/stencil_mode.hpp", + "src/mbgl/gfx/texture.hpp", + "src/mbgl/gfx/types.hpp", + "src/mbgl/gfx/uniform.hpp", + "src/mbgl/gfx/upload_pass.hpp", + "src/mbgl/gfx/vertex_buffer.hpp", + "src/mbgl/gfx/vertex_vector.hpp", + "src/mbgl/layermanager/background_layer_factory.cpp", + "src/mbgl/layermanager/circle_layer_factory.cpp", + "src/mbgl/layermanager/fill_extrusion_layer_factory.cpp", + "src/mbgl/layermanager/fill_layer_factory.cpp", + "src/mbgl/layermanager/heatmap_layer_factory.cpp", + "src/mbgl/layermanager/hillshade_layer_factory.cpp", + "src/mbgl/layermanager/layer_factory.cpp", + "src/mbgl/layermanager/layer_manager.cpp", + "src/mbgl/layermanager/line_layer_factory.cpp", + "src/mbgl/layermanager/raster_layer_factory.cpp", + "src/mbgl/layermanager/symbol_layer_factory.cpp", + "src/mbgl/layout/circle_layout.hpp", + "src/mbgl/layout/clip_lines.cpp", + "src/mbgl/layout/clip_lines.hpp", + "src/mbgl/layout/layout.hpp", + "src/mbgl/layout/merge_lines.cpp", + "src/mbgl/layout/merge_lines.hpp", + "src/mbgl/layout/pattern_layout.hpp", + "src/mbgl/layout/symbol_feature.hpp", + "src/mbgl/layout/symbol_instance.cpp", + "src/mbgl/layout/symbol_instance.hpp", + "src/mbgl/layout/symbol_layout.cpp", + "src/mbgl/layout/symbol_layout.hpp", + "src/mbgl/layout/symbol_projection.cpp", + "src/mbgl/layout/symbol_projection.hpp", + "src/mbgl/map/map.cpp", + "src/mbgl/map/map_impl.cpp", + "src/mbgl/map/map_impl.hpp", + "src/mbgl/map/map_options.cpp", + "src/mbgl/map/map_projection.cpp", + "src/mbgl/map/transform.cpp", + "src/mbgl/map/transform.hpp", + "src/mbgl/map/transform_state.cpp", + "src/mbgl/map/transform_state.hpp", + "src/mbgl/map/zoom_history.hpp", + "src/mbgl/math/log2.cpp", + "src/mbgl/platform/settings.cpp", + "src/mbgl/programs/attributes.hpp", + "src/mbgl/programs/background_pattern_program.hpp", + "src/mbgl/programs/background_program.cpp", + "src/mbgl/programs/background_program.hpp", + "src/mbgl/programs/circle_program.cpp", + "src/mbgl/programs/circle_program.hpp", + "src/mbgl/programs/clipping_mask_program.cpp", + "src/mbgl/programs/clipping_mask_program.hpp", + "src/mbgl/programs/collision_box_program.cpp", + "src/mbgl/programs/collision_box_program.hpp", + "src/mbgl/programs/collision_circle_program.hpp", + "src/mbgl/programs/debug_program.cpp", + "src/mbgl/programs/debug_program.hpp", + "src/mbgl/programs/fill_extrusion_pattern_program.hpp", + "src/mbgl/programs/fill_extrusion_program.cpp", + "src/mbgl/programs/fill_extrusion_program.hpp", + "src/mbgl/programs/fill_outline_pattern_program.hpp", + "src/mbgl/programs/fill_outline_program.hpp", + "src/mbgl/programs/fill_pattern_program.hpp", + "src/mbgl/programs/fill_program.cpp", + "src/mbgl/programs/fill_program.hpp", + "src/mbgl/programs/heatmap_program.cpp", + "src/mbgl/programs/heatmap_program.hpp", + "src/mbgl/programs/heatmap_texture_program.cpp", + "src/mbgl/programs/heatmap_texture_program.hpp", + "src/mbgl/programs/hillshade_prepare_program.cpp", + "src/mbgl/programs/hillshade_prepare_program.hpp", + "src/mbgl/programs/hillshade_program.cpp", + "src/mbgl/programs/hillshade_program.hpp", + "src/mbgl/programs/line_gradient_program.hpp", + "src/mbgl/programs/line_pattern_program.hpp", + "src/mbgl/programs/line_program.cpp", + "src/mbgl/programs/line_program.hpp", + "src/mbgl/programs/line_sdf_program.hpp", + "src/mbgl/programs/program.hpp", + "src/mbgl/programs/program_parameters.cpp", + "src/mbgl/programs/program_parameters.hpp", + "src/mbgl/programs/programs.cpp", + "src/mbgl/programs/programs.hpp", + "src/mbgl/programs/raster_program.cpp", + "src/mbgl/programs/raster_program.hpp", + "src/mbgl/programs/segment.hpp", + "src/mbgl/programs/symbol_icon_program.hpp", + "src/mbgl/programs/symbol_program.cpp", + "src/mbgl/programs/symbol_program.hpp", + "src/mbgl/programs/symbol_sdf_icon_program.hpp", + "src/mbgl/programs/symbol_sdf_text_program.hpp", + "src/mbgl/programs/symbol_text_and_icon_program.hpp", + "src/mbgl/programs/textures.hpp", + "src/mbgl/programs/uniforms.hpp", + "src/mbgl/renderer/backend_scope.cpp", + "src/mbgl/renderer/bucket.hpp", + "src/mbgl/renderer/bucket_parameters.cpp", + "src/mbgl/renderer/bucket_parameters.hpp", + "src/mbgl/renderer/buckets/circle_bucket.cpp", + "src/mbgl/renderer/buckets/circle_bucket.hpp", + "src/mbgl/renderer/buckets/debug_bucket.cpp", + "src/mbgl/renderer/buckets/debug_bucket.hpp", + "src/mbgl/renderer/buckets/fill_bucket.cpp", + "src/mbgl/renderer/buckets/fill_bucket.hpp", + "src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp", + "src/mbgl/renderer/buckets/fill_extrusion_bucket.hpp", + "src/mbgl/renderer/buckets/heatmap_bucket.cpp", + "src/mbgl/renderer/buckets/heatmap_bucket.hpp", + "src/mbgl/renderer/buckets/hillshade_bucket.cpp", + "src/mbgl/renderer/buckets/hillshade_bucket.hpp", + "src/mbgl/renderer/buckets/line_bucket.cpp", + "src/mbgl/renderer/buckets/line_bucket.hpp", + "src/mbgl/renderer/buckets/raster_bucket.cpp", + "src/mbgl/renderer/buckets/raster_bucket.hpp", + "src/mbgl/renderer/buckets/symbol_bucket.cpp", + "src/mbgl/renderer/buckets/symbol_bucket.hpp", + "src/mbgl/renderer/cross_faded_property_evaluator.cpp", + "src/mbgl/renderer/cross_faded_property_evaluator.hpp", + "src/mbgl/renderer/data_driven_property_evaluator.hpp", + "src/mbgl/renderer/group_by_layout.cpp", + "src/mbgl/renderer/group_by_layout.hpp", + "src/mbgl/renderer/image_atlas.cpp", + "src/mbgl/renderer/image_atlas.hpp", + "src/mbgl/renderer/image_manager.cpp", + "src/mbgl/renderer/image_manager.hpp", + "src/mbgl/renderer/image_manager_observer.hpp", + "src/mbgl/renderer/layers/render_background_layer.cpp", + "src/mbgl/renderer/layers/render_background_layer.hpp", + "src/mbgl/renderer/layers/render_circle_layer.cpp", + "src/mbgl/renderer/layers/render_circle_layer.hpp", + "src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp", + "src/mbgl/renderer/layers/render_fill_extrusion_layer.hpp", + "src/mbgl/renderer/layers/render_fill_layer.cpp", + "src/mbgl/renderer/layers/render_fill_layer.hpp", + "src/mbgl/renderer/layers/render_heatmap_layer.cpp", + "src/mbgl/renderer/layers/render_heatmap_layer.hpp", + "src/mbgl/renderer/layers/render_hillshade_layer.cpp", + "src/mbgl/renderer/layers/render_hillshade_layer.hpp", + "src/mbgl/renderer/layers/render_line_layer.cpp", + "src/mbgl/renderer/layers/render_line_layer.hpp", + "src/mbgl/renderer/layers/render_raster_layer.cpp", + "src/mbgl/renderer/layers/render_raster_layer.hpp", + "src/mbgl/renderer/layers/render_symbol_layer.cpp", + "src/mbgl/renderer/layers/render_symbol_layer.hpp", + "src/mbgl/renderer/paint_parameters.cpp", + "src/mbgl/renderer/paint_parameters.hpp", + "src/mbgl/renderer/paint_property_binder.hpp", + "src/mbgl/renderer/paint_property_statistics.hpp", + "src/mbgl/renderer/pattern_atlas.cpp", + "src/mbgl/renderer/pattern_atlas.hpp", + "src/mbgl/renderer/possibly_evaluated_property_value.hpp", + "src/mbgl/renderer/property_evaluation_parameters.hpp", + "src/mbgl/renderer/property_evaluator.hpp", + "src/mbgl/renderer/render_layer.cpp", + "src/mbgl/renderer/render_layer.hpp", + "src/mbgl/renderer/render_light.cpp", + "src/mbgl/renderer/render_light.hpp", + "src/mbgl/renderer/render_orchestrator.cpp", + "src/mbgl/renderer/render_orchestrator.hpp", + "src/mbgl/renderer/render_pass.hpp", + "src/mbgl/renderer/render_source.cpp", + "src/mbgl/renderer/render_source.hpp", + "src/mbgl/renderer/render_source_observer.hpp", + "src/mbgl/renderer/render_static_data.cpp", + "src/mbgl/renderer/render_static_data.hpp", + "src/mbgl/renderer/render_tile.cpp", + "src/mbgl/renderer/render_tile.hpp", + "src/mbgl/renderer/render_tree.hpp", + "src/mbgl/renderer/renderer.cpp", + "src/mbgl/renderer/renderer_impl.cpp", + "src/mbgl/renderer/renderer_impl.hpp", + "src/mbgl/renderer/renderer_state.cpp", + "src/mbgl/renderer/sources/render_custom_geometry_source.cpp", + "src/mbgl/renderer/sources/render_custom_geometry_source.hpp", + "src/mbgl/renderer/sources/render_geojson_source.cpp", + "src/mbgl/renderer/sources/render_geojson_source.hpp", + "src/mbgl/renderer/sources/render_image_source.cpp", + "src/mbgl/renderer/sources/render_image_source.hpp", + "src/mbgl/renderer/sources/render_raster_dem_source.cpp", + "src/mbgl/renderer/sources/render_raster_dem_source.hpp", + "src/mbgl/renderer/sources/render_raster_source.cpp", + "src/mbgl/renderer/sources/render_raster_source.hpp", + "src/mbgl/renderer/sources/render_tile_source.cpp", + "src/mbgl/renderer/sources/render_tile_source.hpp", + "src/mbgl/renderer/sources/render_vector_source.cpp", + "src/mbgl/renderer/sources/render_vector_source.hpp", + "src/mbgl/renderer/source_state.cpp", + "src/mbgl/renderer/source_state.hpp", + "src/mbgl/renderer/style_diff.cpp", + "src/mbgl/renderer/style_diff.hpp", + "src/mbgl/renderer/tile_mask.hpp", + "src/mbgl/renderer/tile_parameters.hpp", + "src/mbgl/renderer/tile_pyramid.cpp", + "src/mbgl/renderer/tile_pyramid.hpp", + "src/mbgl/renderer/tile_render_data.cpp", + "src/mbgl/renderer/tile_render_data.hpp", + "src/mbgl/renderer/transition_parameters.hpp", + "src/mbgl/renderer/update_parameters.hpp", + "src/mbgl/renderer/upload_parameters.hpp", + "src/mbgl/sprite/sprite_loader.cpp", + "src/mbgl/sprite/sprite_loader.hpp", + "src/mbgl/sprite/sprite_loader_observer.hpp", + "src/mbgl/sprite/sprite_parser.cpp", + "src/mbgl/sprite/sprite_parser.hpp", + "src/mbgl/storage/asset_file_source.hpp", + "src/mbgl/storage/mbtiles_file_source.hpp", + "src/mbgl/storage/file_source_manager.cpp", + "src/mbgl/storage/http_file_source.hpp", + "src/mbgl/storage/local_file_source.hpp", + "src/mbgl/storage/main_resource_loader.hpp", + "src/mbgl/storage/network_status.cpp", + "src/mbgl/storage/resource.cpp", + "src/mbgl/storage/resource_options.cpp", + "src/mbgl/storage/resource_transform.cpp", + "src/mbgl/storage/response.cpp", + "src/mbgl/style/collection.hpp", + "src/mbgl/style/conversion/color_ramp_property_value.cpp", + "src/mbgl/style/conversion/constant.cpp", + "src/mbgl/style/conversion/coordinate.cpp", + "src/mbgl/style/conversion/custom_geometry_source_options.cpp", + "src/mbgl/style/conversion/filter.cpp", + "src/mbgl/style/conversion/function.cpp", + "src/mbgl/style/conversion/geojson.cpp", + "src/mbgl/style/conversion/geojson_options.cpp", + "src/mbgl/style/conversion/get_json_type.cpp", + "src/mbgl/style/conversion/json.hpp", + "src/mbgl/style/conversion/layer.cpp", + "src/mbgl/style/conversion/light.cpp", + "src/mbgl/style/conversion/position.cpp", + "src/mbgl/style/conversion/property_value.cpp", + "src/mbgl/style/conversion/rotation.cpp", + "src/mbgl/style/conversion/source.cpp", + "src/mbgl/style/conversion/stringify.hpp", + "src/mbgl/style/conversion/tileset.cpp", + "src/mbgl/style/conversion/transition_options.cpp", + "src/mbgl/style/custom_tile_loader.cpp", + "src/mbgl/style/custom_tile_loader.hpp", + "src/mbgl/style/expression/assertion.cpp", + "src/mbgl/style/expression/at.cpp", + "src/mbgl/style/expression/boolean_operator.cpp", + "src/mbgl/style/expression/case.cpp", + "src/mbgl/style/expression/check_subtype.cpp", + "src/mbgl/style/expression/coalesce.cpp", + "src/mbgl/style/expression/coercion.cpp", + "src/mbgl/style/expression/collator.cpp", + "src/mbgl/style/expression/collator_expression.cpp", + "src/mbgl/style/expression/comparison.cpp", + "src/mbgl/style/expression/compound_expression.cpp", + "src/mbgl/style/expression/distance.cpp", + "src/mbgl/style/expression/dsl.cpp", + "src/mbgl/style/expression/dsl_impl.hpp", + "src/mbgl/style/expression/expression.cpp", + "src/mbgl/style/expression/find_zoom_curve.cpp", + "src/mbgl/style/expression/format_expression.cpp", + "src/mbgl/style/expression/formatted.cpp", + "src/mbgl/style/expression/get_covering_stops.cpp", + "src/mbgl/style/expression/image.cpp", + "src/mbgl/style/expression/image_expression.cpp", + "src/mbgl/style/expression/in.cpp", + "src/mbgl/style/expression/index_of.cpp", + "src/mbgl/style/expression/interpolate.cpp", + "src/mbgl/style/expression/is_constant.cpp", + "src/mbgl/style/expression/is_expression.cpp", + "src/mbgl/style/expression/length.cpp", + "src/mbgl/style/expression/let.cpp", + "src/mbgl/style/expression/literal.cpp", + "src/mbgl/style/expression/match.cpp", + "src/mbgl/style/expression/number_format.cpp", + "src/mbgl/style/expression/parsing_context.cpp", + "src/mbgl/style/expression/step.cpp", + "src/mbgl/style/expression/util.cpp", + "src/mbgl/style/expression/util.hpp", + "src/mbgl/style/expression/value.cpp", + "src/mbgl/style/expression/within.cpp", + "src/mbgl/style/filter.cpp", + "src/mbgl/style/image.cpp", + "src/mbgl/style/image_impl.cpp", + "src/mbgl/style/image_impl.hpp", + "src/mbgl/style/layer.cpp", + "src/mbgl/style/layer_impl.cpp", + "src/mbgl/style/layer_impl.hpp", + "src/mbgl/style/layer_observer.hpp", + "src/mbgl/style/layers/background_layer_impl.cpp", + "src/mbgl/style/layers/background_layer_impl.hpp", + "src/mbgl/style/layers/circle_layer_impl.cpp", + "src/mbgl/style/layers/circle_layer_impl.hpp", + "src/mbgl/style/layers/fill_extrusion_layer_impl.cpp", + "src/mbgl/style/layers/fill_extrusion_layer_impl.hpp", + "src/mbgl/style/layers/fill_layer_impl.cpp", + "src/mbgl/style/layers/fill_layer_impl.hpp", + "src/mbgl/style/layers/heatmap_layer_impl.cpp", + "src/mbgl/style/layers/heatmap_layer_impl.hpp", + "src/mbgl/style/layers/hillshade_layer_impl.cpp", + "src/mbgl/style/layers/hillshade_layer_impl.hpp", + "src/mbgl/style/layers/line_layer_impl.cpp", + "src/mbgl/style/layers/line_layer_impl.hpp", + "src/mbgl/style/layers/raster_layer_impl.cpp", + "src/mbgl/style/layers/raster_layer_impl.hpp", + "src/mbgl/style/layers/symbol_layer_impl.cpp", + "src/mbgl/style/layers/symbol_layer_impl.hpp", + "src/mbgl/style/layout_property.hpp", + "src/mbgl/style/light_impl.cpp", + "src/mbgl/style/light_impl.hpp", + "src/mbgl/style/light_observer.hpp", + "src/mbgl/style/observer.hpp", + "src/mbgl/style/paint_property.hpp", + "src/mbgl/style/parser.cpp", + "src/mbgl/style/parser.hpp", + "src/mbgl/style/properties.hpp", + "src/mbgl/style/property_expression.cpp", + "src/mbgl/style/rapidjson_conversion.hpp", + "src/mbgl/style/source.cpp", + "src/mbgl/style/source_impl.cpp", + "src/mbgl/style/source_impl.hpp", + "src/mbgl/style/source_observer.hpp", + "src/mbgl/style/sources/custom_geometry_source.cpp", + "src/mbgl/style/sources/custom_geometry_source_impl.cpp", + "src/mbgl/style/sources/custom_geometry_source_impl.hpp", + "src/mbgl/style/sources/geojson_source.cpp", + "src/mbgl/style/sources/geojson_source_impl.cpp", + "src/mbgl/style/sources/geojson_source_impl.hpp", + "src/mbgl/style/sources/image_source.cpp", + "src/mbgl/style/sources/image_source_impl.cpp", + "src/mbgl/style/sources/image_source_impl.hpp", + "src/mbgl/style/sources/raster_dem_source.cpp", + "src/mbgl/style/sources/raster_source.cpp", + "src/mbgl/style/sources/raster_source_impl.cpp", + "src/mbgl/style/sources/raster_source_impl.hpp", + "src/mbgl/style/sources/vector_source.cpp", + "src/mbgl/style/sources/vector_source_impl.cpp", + "src/mbgl/style/sources/vector_source_impl.hpp", + "src/mbgl/style/style.cpp", + "src/mbgl/style/style_impl.cpp", + "src/mbgl/style/style_impl.hpp", + "src/mbgl/style/types.cpp", + "src/mbgl/text/bidi.hpp", + "src/mbgl/text/check_max_angle.cpp", + "src/mbgl/text/check_max_angle.hpp", + "src/mbgl/text/collision_feature.cpp", + "src/mbgl/text/collision_feature.hpp", + "src/mbgl/text/collision_index.cpp", + "src/mbgl/text/collision_index.hpp", + "src/mbgl/text/cross_tile_symbol_index.cpp", + "src/mbgl/text/cross_tile_symbol_index.hpp", + "src/mbgl/text/get_anchors.cpp", + "src/mbgl/text/get_anchors.hpp", + "src/mbgl/text/glyph.cpp", + "src/mbgl/text/glyph.hpp", + "src/mbgl/text/glyph_atlas.cpp", + "src/mbgl/text/glyph_atlas.hpp", + "src/mbgl/text/glyph_manager.cpp", + "src/mbgl/text/glyph_manager.hpp", + "src/mbgl/text/glyph_manager_observer.hpp", + "src/mbgl/text/glyph_pbf.cpp", + "src/mbgl/text/glyph_pbf.hpp", + "src/mbgl/text/glyph_range.hpp", + "src/mbgl/text/language_tag.cpp", + "src/mbgl/text/language_tag.hpp", + "src/mbgl/text/local_glyph_rasterizer.hpp", + "src/mbgl/text/placement.cpp", + "src/mbgl/text/placement.hpp", + "src/mbgl/text/quads.cpp", + "src/mbgl/text/quads.hpp", + "src/mbgl/text/shaping.cpp", + "src/mbgl/text/shaping.hpp", + "src/mbgl/text/tagged_string.cpp", + "src/mbgl/text/tagged_string.hpp", + "src/mbgl/tile/custom_geometry_tile.cpp", + "src/mbgl/tile/custom_geometry_tile.hpp", + "src/mbgl/tile/geojson_tile.cpp", + "src/mbgl/tile/geojson_tile.hpp", + "src/mbgl/tile/geojson_tile_data.hpp", + "src/mbgl/tile/geometry_tile.cpp", + "src/mbgl/tile/geometry_tile.hpp", + "src/mbgl/tile/geometry_tile_data.cpp", + "src/mbgl/tile/geometry_tile_data.hpp", + "src/mbgl/tile/geometry_tile_worker.cpp", + "src/mbgl/tile/geometry_tile_worker.hpp", + "src/mbgl/tile/raster_dem_tile.cpp", + "src/mbgl/tile/raster_dem_tile.hpp", + "src/mbgl/tile/raster_dem_tile_worker.cpp", + "src/mbgl/tile/raster_dem_tile_worker.hpp", + "src/mbgl/tile/raster_tile.cpp", + "src/mbgl/tile/raster_tile.hpp", + "src/mbgl/tile/raster_tile_worker.cpp", + "src/mbgl/tile/raster_tile_worker.hpp", + "src/mbgl/tile/tile.cpp", + "src/mbgl/tile/tile.hpp", + "src/mbgl/tile/tile_cache.cpp", + "src/mbgl/tile/tile_cache.hpp", + "src/mbgl/tile/tile_id_hash.cpp", + "src/mbgl/tile/tile_id_io.cpp", + "src/mbgl/tile/tile_loader.hpp", + "src/mbgl/tile/tile_loader_impl.hpp", + "src/mbgl/tile/tile_observer.hpp", + "src/mbgl/tile/vector_tile.cpp", + "src/mbgl/tile/vector_tile.hpp", + "src/mbgl/tile/vector_tile_data.cpp", + "src/mbgl/tile/vector_tile_data.hpp", + "src/mbgl/util/camera.cpp", + "src/mbgl/util/camera.hpp", + "src/mbgl/util/bounding_volumes.hpp", + "src/mbgl/util/bounding_volumes.cpp", + "src/mbgl/util/chrono.cpp", + "src/mbgl/util/client_options.cpp", + "src/mbgl/util/color.cpp", + "src/mbgl/util/constants.cpp", + "src/mbgl/util/convert.cpp", + "src/mbgl/util/dtoa.cpp", + "src/mbgl/util/dtoa.hpp", + "src/mbgl/util/event.cpp", + "src/mbgl/util/filesystem.hpp", + "src/mbgl/util/font_stack.cpp", + "src/mbgl/util/geo.cpp", + "src/mbgl/util/geojson_impl.cpp", + "src/mbgl/util/geometry_util.cpp", + "src/mbgl/util/geometry_util.hpp", + "src/mbgl/util/grid_index.cpp", + "src/mbgl/util/grid_index.hpp", + "src/mbgl/util/hash.hpp", + "src/mbgl/util/http_header.cpp", + "src/mbgl/util/http_header.hpp", + "src/mbgl/util/http_timeout.cpp", + "src/mbgl/util/http_timeout.hpp", + "src/mbgl/util/i18n.cpp", + "src/mbgl/util/i18n.hpp", + "src/mbgl/util/interpolate.cpp", + "src/mbgl/util/intersection_tests.cpp", + "src/mbgl/util/intersection_tests.hpp", + "src/mbgl/util/io.cpp", + "src/mbgl/util/io.hpp", + "src/mbgl/util/literal.hpp", + "src/mbgl/util/logging.cpp", + "src/mbgl/util/longest_common_subsequence.hpp", + "src/mbgl/util/mapbox.cpp", + "src/mbgl/util/mapbox.hpp", + "src/mbgl/util/mat2.cpp", + "src/mbgl/util/mat2.hpp", + "src/mbgl/util/mat3.cpp", + "src/mbgl/util/mat3.hpp", + "src/mbgl/util/mat4.cpp", + "src/mbgl/util/mat4.hpp", + "src/mbgl/util/math.hpp", + "src/mbgl/util/premultiply.cpp", + "src/mbgl/util/quaternion.cpp", + "src/mbgl/util/quaternion.hpp", + "src/mbgl/util/rapidjson.cpp", + "src/mbgl/util/rapidjson.hpp", + "src/mbgl/util/rect.hpp", + "src/mbgl/util/std.hpp", + "src/mbgl/util/stopwatch.cpp", + "src/mbgl/util/stopwatch.hpp", + "src/mbgl/util/string.cpp", + "src/mbgl/util/thread.cpp", + "src/mbgl/util/thread_local.hpp", + "src/mbgl/util/thread_pool.cpp", + "src/mbgl/util/thread_pool.hpp", + "src/mbgl/util/tile_coordinate.hpp", + "src/mbgl/util/tile_cover.cpp", + "src/mbgl/util/tile_cover.hpp", + "src/mbgl/util/tile_cover_impl.cpp", + "src/mbgl/util/tile_cover_impl.hpp", + "src/mbgl/util/tile_range.hpp", + "src/mbgl/util/default_style.cpp", + "src/mbgl/util/tile_server_options.cpp", + "src/mbgl/util/tiny_sdf.cpp", + "src/mbgl/util/tiny_sdf.hpp", + "src/mbgl/util/token.hpp", + "src/mbgl/util/url.cpp", + "src/mbgl/util/url.hpp", + "src/mbgl/util/utf.hpp", + "src/mbgl/util/version.cpp", + "src/mbgl/util/version.hpp", + "src/mbgl/util/work_request.cpp", +] + +MLN_CORE_HEADERS = [ + "include/mbgl/actor/actor.hpp", + "include/mbgl/actor/actor_ref.hpp", + "include/mbgl/actor/aspiring_actor.hpp", + "include/mbgl/actor/established_actor.hpp", + "include/mbgl/actor/mailbox.hpp", + "include/mbgl/actor/message.hpp", + "include/mbgl/actor/scheduler.hpp", + "include/mbgl/annotation/annotation.hpp", + "include/mbgl/gfx/backend_scope.hpp", + "include/mbgl/gfx/renderable.hpp", + "include/mbgl/gfx/renderer_backend.hpp", + "include/mbgl/gfx/rendering_stats.hpp", + "include/mbgl/gfx/shader_registry.hpp", + "include/mbgl/gfx/shader.hpp", + "include/mbgl/i18n/collator.hpp", + "include/mbgl/i18n/number_format.hpp", + "include/mbgl/layermanager/background_layer_factory.hpp", + "include/mbgl/layermanager/circle_layer_factory.hpp", + "include/mbgl/layermanager/fill_extrusion_layer_factory.hpp", + "include/mbgl/layermanager/fill_layer_factory.hpp", + "include/mbgl/layermanager/heatmap_layer_factory.hpp", + "include/mbgl/layermanager/hillshade_layer_factory.hpp", + "include/mbgl/layermanager/layer_factory.hpp", + "include/mbgl/layermanager/layer_manager.hpp", + "include/mbgl/layermanager/line_layer_factory.hpp", + "include/mbgl/layermanager/raster_layer_factory.hpp", + "include/mbgl/layermanager/symbol_layer_factory.hpp", + "include/mbgl/map/bound_options.hpp", + "include/mbgl/map/camera.hpp", + "include/mbgl/map/change.hpp", + "include/mbgl/map/map.hpp", + "include/mbgl/map/map_observer.hpp", + "include/mbgl/map/map_options.hpp", + "include/mbgl/map/map_projection.hpp", + "include/mbgl/map/mode.hpp", + "include/mbgl/map/projection_mode.hpp", + "include/mbgl/math/angles.hpp", + "include/mbgl/math/clamp.hpp", + "include/mbgl/math/log2.hpp", + "include/mbgl/math/minmax.hpp", + "include/mbgl/math/wrap.hpp", + "include/mbgl/platform/settings.hpp", + "include/mbgl/platform/thread.hpp", + "include/mbgl/platform/time.hpp", + "include/mbgl/renderer/query.hpp", + "include/mbgl/renderer/renderer.hpp", + "include/mbgl/renderer/renderer_frontend.hpp", + "include/mbgl/renderer/renderer_observer.hpp", + "include/mbgl/renderer/renderer_state.hpp", + "include/mbgl/storage/database_file_source.hpp", + "include/mbgl/storage/file_source.hpp", + "include/mbgl/storage/file_source_manager.hpp", + "include/mbgl/storage/network_status.hpp", + "include/mbgl/storage/offline.hpp", + "include/mbgl/storage/online_file_source.hpp", + "include/mbgl/storage/resource.hpp", + "include/mbgl/storage/resource_options.hpp", + "include/mbgl/storage/resource_transform.hpp", + "include/mbgl/storage/response.hpp", + "include/mbgl/style/color_ramp_property_value.hpp", + "include/mbgl/style/conversion.hpp", + "include/mbgl/style/conversion/color_ramp_property_value.hpp", + "include/mbgl/style/conversion/constant.hpp", + "include/mbgl/style/conversion/coordinate.hpp", + "include/mbgl/style/conversion/custom_geometry_source_options.hpp", + "include/mbgl/style/conversion/filter.hpp", + "include/mbgl/style/conversion/function.hpp", + "include/mbgl/style/conversion/geojson.hpp", + "include/mbgl/style/conversion/geojson_options.hpp", + "include/mbgl/style/conversion/get_json_type.hpp", + "include/mbgl/style/conversion/layer.hpp", + "include/mbgl/style/conversion/light.hpp", + "include/mbgl/style/conversion/position.hpp", + "include/mbgl/style/conversion/property_value.hpp", + "include/mbgl/style/conversion/rotation.hpp", + "include/mbgl/style/conversion/source.hpp", + "include/mbgl/style/conversion/tileset.hpp", + "include/mbgl/style/conversion/transition_options.hpp", + "include/mbgl/style/conversion_impl.hpp", + "include/mbgl/style/expression/assertion.hpp", + "include/mbgl/style/expression/at.hpp", + "include/mbgl/style/expression/boolean_operator.hpp", + "include/mbgl/style/expression/case.hpp", + "include/mbgl/style/expression/check_subtype.hpp", + "include/mbgl/style/expression/coalesce.hpp", + "include/mbgl/style/expression/coercion.hpp", + "include/mbgl/style/expression/collator.hpp", + "include/mbgl/style/expression/collator_expression.hpp", + "include/mbgl/style/expression/comparison.hpp", + "include/mbgl/style/expression/compound_expression.hpp", + "include/mbgl/style/expression/dsl.hpp", + "include/mbgl/style/expression/distance.hpp", + "include/mbgl/style/expression/error.hpp", + "include/mbgl/style/expression/expression.hpp", + "include/mbgl/style/expression/find_zoom_curve.hpp", + "include/mbgl/style/expression/format_expression.hpp", + "include/mbgl/style/expression/format_section_override.hpp", + "include/mbgl/style/expression/formatted.hpp", + "include/mbgl/style/expression/get_covering_stops.hpp", + "include/mbgl/style/expression/image.hpp", + "include/mbgl/style/expression/image_expression.hpp", + "include/mbgl/style/expression/in.hpp", + "include/mbgl/style/expression/index_of.hpp", + "include/mbgl/style/expression/interpolate.hpp", + "include/mbgl/style/expression/interpolator.hpp", + "include/mbgl/style/expression/is_constant.hpp", + "include/mbgl/style/expression/is_expression.hpp", + "include/mbgl/style/expression/length.hpp", + "include/mbgl/style/expression/let.hpp", + "include/mbgl/style/expression/literal.hpp", + "include/mbgl/style/expression/match.hpp", + "include/mbgl/style/expression/number_format.hpp", + "include/mbgl/style/expression/parsing_context.hpp", + "include/mbgl/style/expression/step.hpp", + "include/mbgl/style/expression/type.hpp", + "include/mbgl/style/expression/value.hpp", + "include/mbgl/style/expression/within.hpp", + "include/mbgl/style/filter.hpp", + "include/mbgl/style/image.hpp", + "include/mbgl/style/layer.hpp", + "include/mbgl/style/layer_properties.hpp", + "include/mbgl/style/position.hpp", + "include/mbgl/style/property_expression.hpp", + "include/mbgl/style/property_value.hpp", + "include/mbgl/style/rotation.hpp", + "include/mbgl/style/source.hpp", + "include/mbgl/style/sources/custom_geometry_source.hpp", + "include/mbgl/style/sources/geojson_source.hpp", + "include/mbgl/style/sources/image_source.hpp", + "include/mbgl/style/sources/raster_dem_source.hpp", + "include/mbgl/style/sources/raster_source.hpp", + "include/mbgl/style/sources/vector_source.hpp", + "include/mbgl/style/style.hpp", + "include/mbgl/style/style_property.hpp", + "include/mbgl/style/transition_options.hpp", + "include/mbgl/style/types.hpp", + "include/mbgl/style/undefined.hpp", + "include/mbgl/tile/tile_id.hpp", + "include/mbgl/tile/tile_necessity.hpp", + "include/mbgl/util/async_request.hpp", + "include/mbgl/util/async_task.hpp", + "include/mbgl/util/bitmask_operations.hpp", + "include/mbgl/util/char_array_buffer.hpp", + "include/mbgl/util/chrono.hpp", + "include/mbgl/util/client_options.hpp", + "include/mbgl/util/color.hpp", + "include/mbgl/util/compression.hpp", + "include/mbgl/util/constants.hpp", + "include/mbgl/util/convert.hpp", + "include/mbgl/util/default_style.hpp", + "include/mbgl/util/enum.hpp", + "include/mbgl/util/event.hpp", + "include/mbgl/util/exception.hpp", + "include/mbgl/util/expected.hpp", + "include/mbgl/util/feature.hpp", + "include/mbgl/util/font_stack.hpp", + "include/mbgl/util/geo.hpp", + "include/mbgl/util/geojson.hpp", + "include/mbgl/util/geometry.hpp", + "include/mbgl/util/ignore.hpp", + "include/mbgl/util/image.hpp", + "include/mbgl/util/immutable.hpp", + "include/mbgl/util/indexed_tuple.hpp", + "include/mbgl/util/interpolate.hpp", + "include/mbgl/util/logging.hpp", + "include/mbgl/util/monotonic_timer.hpp", + "include/mbgl/util/noncopyable.hpp", + "include/mbgl/util/platform.hpp", + "include/mbgl/util/premultiply.hpp", + "include/mbgl/util/projection.hpp", + "include/mbgl/util/range.hpp", + "include/mbgl/util/run_loop.hpp", + "include/mbgl/util/size.hpp", + "include/mbgl/util/string.hpp", + "include/mbgl/util/tile_server_options.hpp", + "include/mbgl/util/thread.hpp", + "include/mbgl/util/tileset.hpp", + "include/mbgl/util/timer.hpp", + "include/mbgl/util/traits.hpp", + "include/mbgl/util/type_list.hpp", + "include/mbgl/util/unitbezier.hpp", + "include/mbgl/util/util.hpp", + "include/mbgl/util/variant.hpp", + "include/mbgl/util/vectors.hpp", + "include/mbgl/util/work_request.hpp", + "include/mbgl/util/work_task.hpp", + "include/mbgl/util/work_task_impl.hpp", +] + +MLN_OPENGL_SOURCE = [ + "src/mbgl/gl/attribute.cpp", + "src/mbgl/gl/attribute.hpp", + "src/mbgl/gl/command_encoder.cpp", + "src/mbgl/gl/command_encoder.hpp", + "src/mbgl/gl/context.cpp", + "src/mbgl/gl/context.hpp", + "src/mbgl/gl/custom_layer.cpp", + "src/mbgl/gl/custom_layer_factory.cpp", + "src/mbgl/gl/custom_layer_impl.cpp", + "src/mbgl/gl/custom_layer_impl.hpp", + "src/mbgl/gl/debugging_extension.cpp", + "src/mbgl/gl/debugging_extension.hpp", + "src/mbgl/gl/defines.hpp", + "src/mbgl/gl/draw_scope_resource.hpp", + "src/mbgl/gl/enum.cpp", + "src/mbgl/gl/enum.hpp", + "src/mbgl/gl/extension.hpp", + "src/mbgl/gl/framebuffer.hpp", + "src/mbgl/gl/index_buffer_resource.cpp", + "src/mbgl/gl/index_buffer_resource.hpp", + "src/mbgl/gl/object.cpp", + "src/mbgl/gl/object.hpp", + "src/mbgl/gl/offscreen_texture.cpp", + "src/mbgl/gl/offscreen_texture.hpp", + "src/mbgl/gl/program.hpp", + "src/mbgl/gl/render_custom_layer.cpp", + "src/mbgl/gl/render_custom_layer.hpp", + "src/mbgl/gl/render_pass.cpp", + "src/mbgl/gl/render_pass.hpp", + "src/mbgl/gl/renderbuffer_resource.hpp", + "src/mbgl/gl/renderer_backend.cpp", + "src/mbgl/gl/state.hpp", + "src/mbgl/gl/texture.cpp", + "src/mbgl/gl/texture.hpp", + "src/mbgl/gl/texture_resource.cpp", + "src/mbgl/gl/texture_resource.hpp", + "src/mbgl/gl/types.hpp", + "src/mbgl/gl/uniform.cpp", + "src/mbgl/gl/uniform.hpp", + "src/mbgl/gl/upload_pass.cpp", + "src/mbgl/gl/upload_pass.hpp", + "src/mbgl/gl/value.cpp", + "src/mbgl/gl/value.hpp", + "src/mbgl/gl/vertex_array.cpp", + "src/mbgl/gl/vertex_array.hpp", + "src/mbgl/gl/vertex_buffer_resource.cpp", + "src/mbgl/gl/vertex_buffer_resource.hpp", + "src/mbgl/layermanager/location_indicator_layer_factory.cpp", + "src/mbgl/platform/gl_functions.cpp", + "src/mbgl/renderer/layers/render_location_indicator_layer.cpp", + "src/mbgl/renderer/layers/render_location_indicator_layer.hpp", + "src/mbgl/style/layers/location_indicator_layer_impl.cpp", + "src/mbgl/style/layers/location_indicator_layer_impl.hpp", +] + +MLN_OPENGL_HEADERS = [ + "include/mbgl/gfx/backend.hpp", + "include/mbgl/gl/custom_layer.hpp", + "include/mbgl/gl/custom_layer_factory.hpp", + "include/mbgl/gl/renderable_resource.hpp", + "include/mbgl/gl/renderer_backend.hpp", + "include/mbgl/layermanager/location_indicator_layer_factory.hpp", + "include/mbgl/platform/gl_functions.hpp", +] diff --git a/platform/BUILD.bazel b/platform/BUILD.bazel new file mode 100644 index 000000000..81e1e8693 --- /dev/null +++ b/platform/BUILD.bazel @@ -0,0 +1,204 @@ +load("//bazel:flags.bzl", "CPP_FLAGS", "MAPLIBRE_FLAGS", "WARNING_FLAGS") + +# Objcpp files for the iOS source +objc_library( + name = "objcpp-sdk", + srcs = [ + "//platform/darwin:darwin_objcpp_srcs", + "//platform/darwin:generated_style_srcs", + "//platform/ios:ios_objcpp_srcs", + "//platform/ios:ios_private_hdrs", + "//platform/ios:ios_public_hdrs", + "//platform/ios:ios_sdk_hdrs", + ], + copts = CPP_FLAGS + MAPLIBRE_FLAGS + [ + "-fcxx-modules", + "-fmodules", + "-Wno-c99-extensions", + "-Wno-gnu-zero-variadic-macro-arguments", + "-Wno-gnu-conditional-omitted-operand", + "-Wno-gnu-statement-expression", + "-Wno-deprecated-declarations", + ], + defines = ["GLES_SILENCE_DEPRECATION=1"], + includes = [ + "darwin/include", + ], + sdk_frameworks = [ + "CoreImage", + "CoreGraphics", + "CoreLocation", + "GLKit", + "OpenGLES", + "QuartzCore", + ], + deps = [ + ":objc-headers", + "//:mbgl-core", + "//platform/darwin:darwin-generated-style-artifacts", + "//platform/darwin:darwin-objcpp", + "//platform/default:mbgl-default", + "//platform/ios/vendor:SMCalloutView", + ], +) + +# platform/ios/sdk-files.json +# Objc files for the iOS source +objc_library( + name = "objc-sdk", + srcs = [ + "//platform/darwin:darwin_objc_srcs", + "//platform/ios:ios_objc_srcs", + "//platform/ios:ios_private_hdrs", + "//platform/ios:ios_public_hdrs", + "//platform/ios:ios_sdk_hdrs", + ], + hdrs = [ + "//platform/darwin:include/mbgl/util/image+MLNAdditions.hpp", + ], + copts = WARNING_FLAGS + MAPLIBRE_FLAGS + [ + "-fmodules", + "-Wno-gnu-zero-variadic-macro-arguments", + "-Wno-variadic-macros", + "-Wno-gnu-conditional-omitted-operand", + "-Wno-deprecated-declarations", + ], + includes = [ + "darwin/include", + ], + sdk_frameworks = [ + "CoreGraphics", + "CoreLocation", + "QuartzCore", + ], + deps = [ + ":objc-headers", + "//:mbgl-core", + "//platform/darwin:darwin-generated-style-artifacts", + "//platform/darwin:darwin-objc", + "//platform/default:mbgl-default", + "//platform/ios/vendor:SMCalloutView", + ], +) + +# Common headers between objc and objcpp libraries. +objc_library( + name = "objc-headers", + srcs = glob([ + "darwin/src/*.h", + "ios/src/*.h", + ]), + includes = [ + "darwin/src", + "ios/src", + ], + sdk_frameworks = [ + "CoreGraphics", + "CoreLocation", + "QuartzCore", + ], + deps = [ + "//platform/darwin:darwin-objc", + "//platform/darwin:darwin-objcpp", + ], +) + +# sdk for the static target which includes the resources. +objc_library( + name = "ios-sdk", + hdrs = [ + "//platform/darwin:darwin_objc_hdrs", + "//platform/darwin:generated_style_public_hdrs", + "//platform/ios:ios_sdk_hdrs", + ], + data = ["//platform/ios:resources"], + module_name = "MapLibre", + sdk_dylibs = [ + "libz", + "libsqlite3", + "libc++", + ], + sdk_frameworks = [ + "MobileCoreServices", + "Security", + "WebKit", + ], + visibility = ["//visibility:public"], + deps = [ + ":objc-sdk", + ":objcpp-sdk", + ], +) + +# sdk for the dynamic target. Lacking the resources bundle since for dynamic +# they are in the main package. +objc_library( + name = "ios-sdk-dynamic", + sdk_dylibs = [ + "libz", + "libsqlite3", + "libc++", + ], + sdk_frameworks = [ + "MobileCoreServices", + "Security", + "WebKit", + ], + visibility = ["//visibility:public"], + deps = [ + "//:objc-sdk", + "//:objcpp-sdk", + ], +) + +objc_library( + name = "iosapp", + srcs = [ + "//platform/darwin:app/LimeGreenStyleLayer.h", + "//platform/darwin:app/LimeGreenStyleLayer.m", + "//platform/ios:ios_app_srcs", + ], + data = glob([ + "app/Assets.xcassets/**", + ]), + defines = ["GLES_SILENCE_DEPRECATION"], + includes = [ + "darwin/app", + "darwin/src", + "ios/src", + ], + sdk_frameworks = [ + "GLKit", # needed for LimeGreenStyleLayer + ], + visibility = ["//visibility:public"], + deps = [ + ":ios-sdk", + ], +) + +sh_binary( + name = "check-public-symbols", + srcs = ["//platform/darwin:scripts/check-public-symbols.sh"], + data = [ + "//platform/darwin:darwin_objc_hdrs", + "//platform/darwin:darwin_objc_srcs", + "//platform/darwin:darwin_objcpp_hdrs", + "//platform/darwin:darwin_objcpp_srcs", + "//platform/darwin:darwin_private_hdrs", + "//platform/darwin:generated_style_hdrs", + "//platform/darwin:generated_style_srcs", + "//platform/darwin:scripts/check-public-symbols.js", + "//platform/ios:ios_objc_srcs", + "//platform/ios:ios_objcpp_srcs", + "//platform/ios:ios_private_hdrs", + "//platform/ios:ios_public_hdrs", + "//platform/ios:ios_sdk_hdrs", + "//platform/macos:macos_objc_srcs", + "//platform/macos:macos_objcpp_srcs", + "//platform/macos:macos_private_hdrs", + "//platform/macos:macos_public_hdrs", + ], + deps = [ + "//platform/darwin:generated_code", + ], +) diff --git a/platform/ios/platform/darwin/.gitignore b/platform/darwin/.gitignore similarity index 100% rename from platform/ios/platform/darwin/.gitignore rename to platform/darwin/.gitignore diff --git a/platform/darwin/BUILD.bazel b/platform/darwin/BUILD.bazel index c19709a68..f4af89ceb 100644 --- a/platform/darwin/BUILD.bazel +++ b/platform/darwin/BUILD.bazel @@ -1,4 +1,217 @@ load("//bazel:flags.bzl", "CPP_FLAGS", "MAPLIBRE_FLAGS", "WARNING_FLAGS") +load( + "bazel/files.bzl", + "MLN_DARWIN_OBJCPP_HEADERS", + "MLN_DARWIN_OBJC_HEADERS", + "MLN_DARWIN_PRIVATE_HEADERS", + "MLN_DARWIN_PUBLIC_OBJCPP_SOURCE", + "MLN_DARWIN_PUBLIC_OBJC_SOURCE", + "MLN_GENERATED_DARWIN_STYLE_HEADERS", + "MLN_GENERATED_DARWIN_STYLE_PUBLIC_HEADERS", + "MLN_GENERATED_DARWIN_STYLE_SOURCE", + "MLN_GENERATED_DARWIN_TEST_CODE", +) +load( + "@build_bazel_rules_swift//swift:swift.bzl", + "swift_library", +) + +filegroup( + name = "darwin_private_hdrs", + srcs = MLN_DARWIN_PRIVATE_HEADERS, + visibility = ["//visibility:public"], +) + +filegroup( + name = "darwin_objc_hdrs", + srcs = MLN_DARWIN_OBJC_HEADERS, + visibility = ["//visibility:public"], +) + +filegroup( + name = "darwin_objcpp_hdrs", + srcs = MLN_DARWIN_OBJCPP_HEADERS, + visibility = ["//visibility:public"], +) + +filegroup( + name = "darwin_objcpp_srcs", + srcs = MLN_DARWIN_PUBLIC_OBJCPP_SOURCE, + visibility = ["//visibility:public"], +) + +filegroup( + name = "darwin_objc_srcs", + srcs = MLN_DARWIN_PUBLIC_OBJC_SOURCE, + visibility = ["//visibility:public"], +) + +filegroup( + name = "generated_style_srcs", + srcs = MLN_GENERATED_DARWIN_STYLE_SOURCE, + visibility = ["//visibility:public"], +) + +filegroup( + name = "generated_style_hdrs", + srcs = MLN_GENERATED_DARWIN_STYLE_HEADERS, + visibility = ["//visibility:public"], +) + +filegroup( + name = "generated_style_public_hdrs", + srcs = MLN_GENERATED_DARWIN_STYLE_PUBLIC_HEADERS, + visibility = ["//visibility:public"], +) + +filegroup( + name = "generated_test_srcs", + srcs = MLN_GENERATED_DARWIN_TEST_CODE, + visibility = ["//visibility:public"], +) + +filegroup( + name = "test_ejs_templates", + srcs = [ + "test/MLNDocumentationGuideTests.swift", + "test/MLNLightTest.mm.ejs", + "test/MLNStyleLayerTests.mm.ejs", + ], + visibility = ["//visibility:public"], +) + +filegroup( + name = "docs_ejs_templates", + srcs = [ + "docs/guides/For_Style_Authors.md.ejs", + "docs/guides/Migrating_to_Expressions.md.ejs", + "docs/guides/Tile_URL_Templates.md.ejs", + ], + visibility = ["//visibility:public"], +) + +filegroup( + name = "generator_data", + srcs = [ + "src/MLNLight.h.ejs", + "src/MLNLight.mm.ejs", + "src/MLNStyleLayer.h.ejs", + "src/MLNStyleLayer.mm.ejs", + "src/MLNStyleLayer_Private.h.ejs", + ], +) + +genrule( + name = "generated_code", + srcs = [ + ":generator_data", + ":test_ejs_templates", + ":docs_ejs_templates", + ], + outs = MLN_GENERATED_DARWIN_STYLE_SOURCE + + MLN_GENERATED_DARWIN_STYLE_HEADERS + MLN_GENERATED_DARWIN_TEST_CODE, + cmd = "node $(execpath scripts/generate-style-code.js) --root $(RULEDIR)/../../", + tools = ["scripts/generate-style-code.js"], + visibility = ["//visibility:public"], +) + +objc_library( + name = "test_utility", + srcs = [ + "test/MLNTestUtility.h", + ], + includes = ["test"], + visibility = [ + "//platform/ios/test:__pkg__", + ], +) + +objc_library( + name = "shared_tests_objc_srcs", + srcs = glob( + [ + "test/*.m", + "test/*.h", + ], + allow_empty = False, + ), + copts = MAPLIBRE_FLAGS + WARNING_FLAGS, + data = glob( + [ + "test/Media.xcassets/**", + ], + allow_empty = False, + ), + sdk_frameworks = [ + "MapKit", + ], + visibility = [ + "//platform/ios/test:__pkg__", + ], + deps = [ + "test_utility", + "//platform:ios-sdk", + ], +) + +objc_library( + name = "shared_tests_objcpp_srcs", + srcs = glob( + [ + "test/*.h", + "test/*.mm", + ], + allow_empty = False, + exclude = [ + "test/MLNOfflineStorageTests.mm", + ], + ), + copts = CPP_FLAGS + MAPLIBRE_FLAGS + WARNING_FLAGS + ["-Wno-deprecated-declarations"], + visibility = [ + "//platform/ios/test:__pkg__", + ], + deps = [ + "//platform:ios-sdk", + ], +) + +swift_library( + name = "shared_tests_swift_srcs", + testonly = True, + srcs = glob( + [ + "test/*.swift", + ], + allow_empty = False, + ), + data = [ + "test/amsterdam.geojson", + "test/one-liner.json", + ], + visibility = [ + "//platform/ios/test:__pkg__", + ], + deps = [ + "//platform:ios-sdk", + ], +) + +cc_library( + name = "darwin-generated-style-artifacts", + srcs = [ + ":darwin_objc_hdrs", + ":darwin_objcpp_hdrs", + ":darwin_private_hdrs", + ":generated_style_hdrs", + ], + hdrs = [ + ":generated_style_hdrs", + ], + visibility = ["//visibility:public"], + deps = [ + ":generated_code", + ], +) # Objc files for the iOS source objc_library( @@ -14,10 +227,14 @@ objc_library( copts = WARNING_FLAGS + MAPLIBRE_FLAGS + [ "-fmodules", ], + defines = [ + "GLES_SILENCE_DEPRECATION=1", + "GL_SILENCE_DEPRECATION=1", + ], includes = [ "include", ], - visibility = ["//platform/ios:__pkg__"], + visibility = ["//visibility:public"], deps = [ "//:mbgl-core", "//platform/default:mbgl-default", @@ -57,7 +274,7 @@ objc_library( "CoreText", "ImageIO", ], - visibility = ["//platform/ios:__pkg__"], + visibility = ["//visibility:public"], deps = [ "//:mbgl-core", "//platform/default:mbgl-default", @@ -74,12 +291,32 @@ objc_library( "src/timer.cpp", ], copts = CPP_FLAGS + MAPLIBRE_FLAGS, + defines = [ + "GLES_SILENCE_DEPRECATION=1", + "GL_SILENCE_DEPRECATION=1", + ], sdk_frameworks = [ "OpenGLES", "SystemConfiguration", ], - visibility = ["//platform/default:__pkg__"], + visibility = ["//visibility:public"], deps = [ "//:mbgl-core", ], ) + +exports_files( + [ + "test/amsterdam.geojson", + "test/MLNSDKTestHelpers.swift", + "app/LimeGreenStyleLayer.h", + "app/LimeGreenStyleLayer.m", + "include/mbgl/util/image+MLNAdditions.hpp", + "scripts/check-public-symbols.js", + "scripts/check-public-symbols.sh", + ] + MLN_DARWIN_PUBLIC_OBJC_SOURCE + + MLN_DARWIN_PUBLIC_OBJCPP_SOURCE + + MLN_DARWIN_PRIVATE_HEADERS + + MLN_DARWIN_OBJC_HEADERS + + MLN_DARWIN_OBJCPP_HEADERS, +) diff --git a/platform/ios/platform/darwin/app/LimeGreenStyleLayer.h b/platform/darwin/app/LimeGreenStyleLayer.h similarity index 100% rename from platform/ios/platform/darwin/app/LimeGreenStyleLayer.h rename to platform/darwin/app/LimeGreenStyleLayer.h diff --git a/platform/ios/platform/darwin/app/LimeGreenStyleLayer.m b/platform/darwin/app/LimeGreenStyleLayer.m similarity index 100% rename from platform/ios/platform/darwin/app/LimeGreenStyleLayer.m rename to platform/darwin/app/LimeGreenStyleLayer.m diff --git a/platform/darwin/bazel/files.bzl b/platform/darwin/bazel/files.bzl new file mode 100644 index 000000000..28ee151f3 --- /dev/null +++ b/platform/darwin/bazel/files.bzl @@ -0,0 +1,223 @@ +MLN_GENERATED_DARWIN_STYLE_SOURCE = [ + "src/MLNLight.mm", + "src/MLNBackgroundStyleLayer.mm", + "src/MLNCircleStyleLayer.mm", + "src/MLNFillExtrusionStyleLayer.mm", + "src/MLNFillStyleLayer.mm", + "src/MLNHeatmapStyleLayer.mm", + "src/MLNHillshadeStyleLayer.mm", + "src/MLNLineStyleLayer.mm", + "src/MLNRasterStyleLayer.mm", + "src/MLNSymbolStyleLayer.mm", +] + +MLN_GENERATED_DARWIN_STYLE_PUBLIC_HEADERS = [ + "src/MLNBackgroundStyleLayer.h", + "src/MLNFillExtrusionStyleLayer.h", + "src/MLNHeatmapStyleLayer.h", + "src/MLNLight.h", + "src/MLNLineStyleLayer.h", + "src/MLNSymbolStyleLayer.h", + "src/MLNCircleStyleLayer.h", + "src/MLNFillStyleLayer.h", + "src/MLNHillshadeStyleLayer.h", + "src/MLNRasterStyleLayer.h", +] + +MLN_GENERATED_DARWIN_STYLE_HEADERS = [ + "src/MLNRasterStyleLayer_Private.h", + "src/MLNBackgroundStyleLayer_Private.h", + "src/MLNFillExtrusionStyleLayer_Private.h", + "src/MLNHeatmapStyleLayer_Private.h", + "src/MLNLineStyleLayer_Private.h", + "src/MLNSymbolStyleLayer_Private.h", + "src/MLNCircleStyleLayer_Private.h", + "src/MLNFillStyleLayer_Private.h", + "src/MLNHillshadeStyleLayer_Private.h", +] + MLN_GENERATED_DARWIN_STYLE_PUBLIC_HEADERS + +MLN_GENERATED_DARWIN_TEST_CODE = [ + "test/MLNBackgroundStyleLayerTests.mm", + "test/MLNFillExtrusionStyleLayerTests.mm", + "test/MLNHeatmapStyleLayerTests.mm", + "test/MLNLightTest.mm", + "test/MLNRasterStyleLayerTests.mm", + "test/MLNCircleStyleLayerTests.mm", + "test/MLNFillStyleLayerTests.mm", + "test/MLNHillshadeStyleLayerTests.mm", + "test/MLNLineStyleLayerTests.mm", + "test/MLNSymbolStyleLayerTests.mm", +] + +MLN_DARWIN_OBJC_HEADERS = [ + "src/MLNAnnotation.h", + "src/MLNAttributedExpression.h", + "src/MLNAttributionInfo.h", + "src/MLNClockDirectionFormatter.h", + "src/MLNCluster.h", + "src/MLNCompassDirectionFormatter.h", + "src/MLNComputedShapeSource.h", + "src/MLNCoordinateFormatter.h", + "src/MLNDefaultStyle.h", + "src/MLNDistanceFormatter.h", + "src/MLNFeature.h", + "src/MLNForegroundStyleLayer.h", + "src/MLNFoundation.h", + "src/MLNGeometry.h", + "src/MLNImageSource.h", + "src/MLNLocationManager.h", + "src/MLNLoggingConfiguration.h", + "src/MLNMapCamera.h", + "src/MLNMapSnapshotter.h", + "src/MLNMultiPoint.h", + "src/MLNNetworkConfiguration.h", + "src/MLNOfflinePack.h", + "src/MLNOfflineRegion.h", + "src/MLNOfflineStorage.h", + "src/MLNOpenGLStyleLayer.h", + "src/MLNOverlay.h", + "src/MLNPointAnnotation.h", + "src/MLNPointCollection.h", + "src/MLNPolygon.h", + "src/MLNPolyline.h", + "src/MLNRasterDEMSource.h", + "src/MLNRasterTileSource.h", + "src/MLNSettings.h", + "src/MLNShape.h", + "src/MLNShapeCollection.h", + "src/MLNShapeOfflineRegion.h", + "src/MLNShapeSource.h", + "src/MLNSource.h", + "src/MLNStyle.h", + "src/MLNStyleLayer.h", + "src/MLNStyleValue.h", + "src/MLNTilePyramidOfflineRegion.h", + "src/MLNTileServerOptions.h", + "src/MLNTileSource.h", + "src/MLNTypes.h", + "src/MLNVectorStyleLayer.h", + "src/MLNVectorTileSource.h", + "src/NSExpression+MLNAdditions.h", + "src/NSPredicate+MLNAdditions.h", + "src/NSValue+MLNAdditions.h", +] + +MLN_DARWIN_OBJCPP_HEADERS = [ + "src/MLNConversion.h", + "src/MLNReachability.h", + "src/MLNRendererConfiguration.h", + "src/MLNRendererFrontend.h", + "src/MLNStyleLayerManager.h", + "src/MLNValueEvaluator.h", + "src/NSArray+MLNAdditions.h", + "src/NSBundle+MLNAdditions.h", + "src/NSCoder+MLNAdditions.h", + "src/NSComparisonPredicate+MLNAdditions.h", + "src/NSCompoundPredicate+MLNAdditions.h", + "src/NSDate+MLNAdditions.h", + "src/NSDictionary+MLNAdditions.h", + "src/NSException+MLNAdditions.h", + "src/NSString+MLNAdditions.h", + "src/NSURL+MLNAdditions.h", + "src/NSValue+MLNStyleAttributeAdditions.h", +] + +MLN_DARWIN_PRIVATE_HEADERS = [ + "src/MLNAttributionInfo_Private.h", + "src/MLNComputedShapeSource_Private.h", + "src/MLNFeature_Private.h", + "src/MLNFoundation_Private.h", + "src/MLNGeometry_Private.h", + "src/MLNLight_Private.h", + "src/MLNLocationManager_Private.h", + "src/MLNLoggingConfiguration_Private.h", + "src/MLNMapSnapshotter_Private.h", + "src/MLNMultiPoint_Private.h", + "src/MLNNetworkConfiguration_Private.h", + "src/MLNOfflinePack_Private.h", + "src/MLNOfflineRegion_Private.h", + "src/MLNOfflineStorage_Private.h", + "src/MLNOpenGLStyleLayer_Private.h", + "src/MLNPointCollection_Private.h", + "src/MLNPolygon_Private.h", + "src/MLNPolyline_Private.h", + "src/MLNRasterTileSource_Private.h", + "src/MLNSettings_Private.h", + "src/MLNShapeOfflineRegion_Private.h", + "src/MLNShapeSource_Private.h", + "src/MLNShape_Private.h", + "src/MLNSource_Private.h", + "src/MLNStyleLayer_Private.h", + "src/MLNStyleValue_Private.h", + "src/MLNStyle_Private.h", + "src/MLNTilePyramidOfflineRegion_Private.h", + "src/MLNTileSource_Private.h", + "src/MLNVectorTileSource_Private.h", + "src/NSExpression+MLNPrivateAdditions.h", + "src/NSPredicate+MLNPrivateAdditions.h", +] + +MLN_DARWIN_PUBLIC_OBJCPP_SOURCE = [ + "src/MLNAttributionInfo.mm", + "src/MLNComputedShapeSource.mm", + "src/MLNDefaultStyle.mm", + "src/MLNFeature.mm", + "src/MLNForegroundStyleLayer.mm", + "src/MLNFoundation.mm", + "src/MLNGeometry.mm", + "src/MLNImageSource.mm", + "src/MLNLoggingConfiguration.mm", + "src/MLNMapCamera.mm", + "src/MLNMapSnapshotter.mm", + "src/MLNMultiPoint.mm", + "src/MLNNetworkConfiguration.mm", + "src/MLNOfflinePack.mm", + "src/MLNOfflineStorage.mm", + "src/MLNOpenGLStyleLayer.mm", + "src/MLNPointAnnotation.mm", + "src/MLNPointCollection.mm", + "src/MLNPolygon.mm", + "src/MLNPolyline.mm", + "src/MLNRasterDEMSource.mm", + "src/MLNRasterTileSource.mm", + "src/MLNSettings.mm", + "src/MLNShape.mm", + "src/MLNShapeCollection.mm", + "src/MLNShapeOfflineRegion.mm", + "src/MLNShapeSource.mm", + "src/MLNSource.mm", + "src/MLNStyle.mm", + "src/MLNStyleLayer.mm", + "src/MLNStyleLayerManager.mm", + "src/MLNStyleValue.mm", + "src/MLNTilePyramidOfflineRegion.mm", + "src/MLNTileServerOptions.mm", + "src/MLNTileSource.mm", + "src/MLNVectorStyleLayer.mm", + "src/MLNVectorTileSource.mm", + "src/NSArray+MLNAdditions.mm", + "src/NSBundle+MLNAdditions.mm", + "src/NSCoder+MLNAdditions.mm", + "src/NSComparisonPredicate+MLNAdditions.mm", + "src/NSCompoundPredicate+MLNAdditions.mm", + "src/NSDate+MLNAdditions.mm", + "src/NSDictionary+MLNAdditions.mm", + "src/NSExpression+MLNAdditions.mm", + "src/NSPredicate+MLNAdditions.mm", + "src/NSValue+MLNStyleAttributeAdditions.mm", +] + +MLN_DARWIN_PUBLIC_OBJC_SOURCE = [ + "src/MLNAttributedExpression.m", + "src/MLNClockDirectionFormatter.m", + "src/MLNCompassDirectionFormatter.m", + "src/MLNCoordinateFormatter.m", + "src/MLNDistanceFormatter.m", + "src/MLNLocationManager.m", + "src/MLNReachability.m", + "src/MLNRendererConfiguration.m", + "src/MLNTypes.m", + "src/NSString+MLNAdditions.m", + "src/NSURL+MLNAdditions.m", + "src/NSValue+MLNAdditions.m", +] diff --git a/platform/ios/platform/darwin/darwin.xcconfig b/platform/darwin/darwin.xcconfig similarity index 100% rename from platform/ios/platform/darwin/darwin.xcconfig rename to platform/darwin/darwin.xcconfig diff --git a/platform/ios/platform/darwin/docs/guides/Customizing Fonts.md b/platform/darwin/docs/guides/Customizing_Fonts.md similarity index 100% rename from platform/ios/platform/darwin/docs/guides/Customizing Fonts.md rename to platform/darwin/docs/guides/Customizing_Fonts.md diff --git a/platform/ios/platform/darwin/docs/guides/For Style Authors.md.ejs b/platform/darwin/docs/guides/For_Style_Authors.md.ejs similarity index 100% rename from platform/ios/platform/darwin/docs/guides/For Style Authors.md.ejs rename to platform/darwin/docs/guides/For_Style_Authors.md.ejs diff --git a/platform/ios/platform/darwin/docs/guides/Migrating to Expressions.md.ejs b/platform/darwin/docs/guides/Migrating_to_Expressions.md.ejs similarity index 100% rename from platform/ios/platform/darwin/docs/guides/Migrating to Expressions.md.ejs rename to platform/darwin/docs/guides/Migrating_to_Expressions.md.ejs diff --git a/platform/ios/platform/darwin/docs/guides/Predicates and Expressions.md b/platform/darwin/docs/guides/Predicates_and_Expressions.md similarity index 100% rename from platform/ios/platform/darwin/docs/guides/Predicates and Expressions.md rename to platform/darwin/docs/guides/Predicates_and_Expressions.md diff --git a/platform/ios/platform/darwin/docs/guides/Tile URL Templates.md.ejs b/platform/darwin/docs/guides/Tile_URL_Templates.md.ejs similarity index 100% rename from platform/ios/platform/darwin/docs/guides/Tile URL Templates.md.ejs rename to platform/darwin/docs/guides/Tile_URL_Templates.md.ejs diff --git a/platform/ios/platform/darwin/docs/guides/Working with GeoJSON Data.md b/platform/darwin/docs/guides/Working_with_GeoJSON_Data.md similarity index 100% rename from platform/ios/platform/darwin/docs/guides/Working with GeoJSON Data.md rename to platform/darwin/docs/guides/Working_with_GeoJSON_Data.md diff --git a/platform/ios/platform/darwin/docs/img/data-driven-styling/cast.png b/platform/darwin/docs/img/data-driven-styling/cast.png similarity index 100% rename from platform/ios/platform/darwin/docs/img/data-driven-styling/cast.png rename to platform/darwin/docs/img/data-driven-styling/cast.png diff --git a/platform/ios/platform/darwin/docs/img/data-driven-styling/exponential-function-1.png b/platform/darwin/docs/img/data-driven-styling/exponential-function-1.png similarity index 100% rename from platform/ios/platform/darwin/docs/img/data-driven-styling/exponential-function-1.png rename to platform/darwin/docs/img/data-driven-styling/exponential-function-1.png diff --git a/platform/ios/platform/darwin/docs/img/data-driven-styling/exponential-function.png b/platform/darwin/docs/img/data-driven-styling/exponential-function.png similarity index 100% rename from platform/ios/platform/darwin/docs/img/data-driven-styling/exponential-function.png rename to platform/darwin/docs/img/data-driven-styling/exponential-function.png diff --git a/platform/ios/platform/darwin/docs/img/data-driven-styling/identity.png b/platform/darwin/docs/img/data-driven-styling/identity.png similarity index 100% rename from platform/ios/platform/darwin/docs/img/data-driven-styling/identity.png rename to platform/darwin/docs/img/data-driven-styling/identity.png diff --git a/platform/ios/platform/darwin/docs/img/data-driven-styling/multiply.png b/platform/darwin/docs/img/data-driven-styling/multiply.png similarity index 100% rename from platform/ios/platform/darwin/docs/img/data-driven-styling/multiply.png rename to platform/darwin/docs/img/data-driven-styling/multiply.png diff --git a/platform/ios/platform/darwin/docs/theme/assets/css/highlight.css.scss b/platform/darwin/docs/theme/assets/css/highlight.css.scss similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/css/highlight.css.scss rename to platform/darwin/docs/theme/assets/css/highlight.css.scss diff --git a/platform/ios/platform/darwin/docs/theme/assets/css/jazzy.css.scss b/platform/darwin/docs/theme/assets/css/jazzy.css.scss similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/css/jazzy.css.scss rename to platform/darwin/docs/theme/assets/css/jazzy.css.scss diff --git a/platform/ios/platform/darwin/docs/theme/assets/fonts/opensans-bold.eot b/platform/darwin/docs/theme/assets/fonts/opensans-bold.eot old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/fonts/opensans-bold.eot rename to platform/darwin/docs/theme/assets/fonts/opensans-bold.eot diff --git a/platform/ios/platform/darwin/docs/theme/assets/fonts/opensans-bold.woff b/platform/darwin/docs/theme/assets/fonts/opensans-bold.woff old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/fonts/opensans-bold.woff rename to platform/darwin/docs/theme/assets/fonts/opensans-bold.woff diff --git a/platform/ios/platform/darwin/docs/theme/assets/fonts/opensans-regular.eot b/platform/darwin/docs/theme/assets/fonts/opensans-regular.eot old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/fonts/opensans-regular.eot rename to platform/darwin/docs/theme/assets/fonts/opensans-regular.eot diff --git a/platform/ios/platform/darwin/docs/theme/assets/fonts/opensans-regular.woff b/platform/darwin/docs/theme/assets/fonts/opensans-regular.woff old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/fonts/opensans-regular.woff rename to platform/darwin/docs/theme/assets/fonts/opensans-regular.woff diff --git a/platform/ios/platform/darwin/docs/theme/assets/img/carat.png b/platform/darwin/docs/theme/assets/img/carat.png old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/img/carat.png rename to platform/darwin/docs/theme/assets/img/carat.png diff --git a/platform/ios/platform/darwin/docs/theme/assets/img/dash.png b/platform/darwin/docs/theme/assets/img/dash.png old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/img/dash.png rename to platform/darwin/docs/theme/assets/img/dash.png diff --git a/platform/ios/platform/darwin/docs/theme/assets/img/github.svg b/platform/darwin/docs/theme/assets/img/github.svg similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/img/github.svg rename to platform/darwin/docs/theme/assets/img/github.svg diff --git a/platform/ios/platform/darwin/docs/theme/assets/img/link.svg b/platform/darwin/docs/theme/assets/img/link.svg similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/img/link.svg rename to platform/darwin/docs/theme/assets/img/link.svg diff --git a/platform/ios/platform/darwin/docs/theme/assets/img/mapbox.svg b/platform/darwin/docs/theme/assets/img/mapbox.svg similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/img/mapbox.svg rename to platform/darwin/docs/theme/assets/img/mapbox.svg diff --git a/platform/ios/platform/darwin/docs/theme/assets/img/minus.svg b/platform/darwin/docs/theme/assets/img/minus.svg similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/img/minus.svg rename to platform/darwin/docs/theme/assets/img/minus.svg diff --git a/platform/ios/platform/darwin/docs/theme/assets/img/plus.svg b/platform/darwin/docs/theme/assets/img/plus.svg similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/img/plus.svg rename to platform/darwin/docs/theme/assets/img/plus.svg diff --git a/platform/ios/platform/darwin/docs/theme/assets/js/jazzy.js b/platform/darwin/docs/theme/assets/js/jazzy.js old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/js/jazzy.js rename to platform/darwin/docs/theme/assets/js/jazzy.js diff --git a/platform/ios/platform/darwin/docs/theme/assets/js/jazzy.search.js b/platform/darwin/docs/theme/assets/js/jazzy.search.js similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/js/jazzy.search.js rename to platform/darwin/docs/theme/assets/js/jazzy.search.js diff --git a/platform/ios/platform/darwin/docs/theme/assets/js/jquery.min.js b/platform/darwin/docs/theme/assets/js/jquery.min.js old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/js/jquery.min.js rename to platform/darwin/docs/theme/assets/js/jquery.min.js diff --git a/platform/ios/platform/darwin/docs/theme/assets/js/lunr.min.js b/platform/darwin/docs/theme/assets/js/lunr.min.js similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/js/lunr.min.js rename to platform/darwin/docs/theme/assets/js/lunr.min.js diff --git a/platform/ios/platform/darwin/docs/theme/assets/js/typeahead.jquery.js b/platform/darwin/docs/theme/assets/js/typeahead.jquery.js similarity index 100% rename from platform/ios/platform/darwin/docs/theme/assets/js/typeahead.jquery.js rename to platform/darwin/docs/theme/assets/js/typeahead.jquery.js diff --git a/platform/ios/platform/darwin/docs/theme/templates/deprecation.mustache b/platform/darwin/docs/theme/templates/deprecation.mustache similarity index 100% rename from platform/ios/platform/darwin/docs/theme/templates/deprecation.mustache rename to platform/darwin/docs/theme/templates/deprecation.mustache diff --git a/platform/ios/platform/darwin/docs/theme/templates/doc.mustache b/platform/darwin/docs/theme/templates/doc.mustache similarity index 100% rename from platform/ios/platform/darwin/docs/theme/templates/doc.mustache rename to platform/darwin/docs/theme/templates/doc.mustache diff --git a/platform/ios/platform/darwin/docs/theme/templates/footer.mustache b/platform/darwin/docs/theme/templates/footer.mustache similarity index 100% rename from platform/ios/platform/darwin/docs/theme/templates/footer.mustache rename to platform/darwin/docs/theme/templates/footer.mustache diff --git a/platform/ios/platform/darwin/docs/theme/templates/header.mustache b/platform/darwin/docs/theme/templates/header.mustache similarity index 100% rename from platform/ios/platform/darwin/docs/theme/templates/header.mustache rename to platform/darwin/docs/theme/templates/header.mustache diff --git a/platform/ios/platform/darwin/docs/theme/templates/nav.mustache b/platform/darwin/docs/theme/templates/nav.mustache similarity index 100% rename from platform/ios/platform/darwin/docs/theme/templates/nav.mustache rename to platform/darwin/docs/theme/templates/nav.mustache diff --git a/platform/ios/platform/darwin/docs/theme/templates/parameter.mustache b/platform/darwin/docs/theme/templates/parameter.mustache similarity index 100% rename from platform/ios/platform/darwin/docs/theme/templates/parameter.mustache rename to platform/darwin/docs/theme/templates/parameter.mustache diff --git a/platform/ios/platform/darwin/docs/theme/templates/task.mustache b/platform/darwin/docs/theme/templates/task.mustache similarity index 100% rename from platform/ios/platform/darwin/docs/theme/templates/task.mustache rename to platform/darwin/docs/theme/templates/task.mustache diff --git a/platform/ios/platform/darwin/docs/theme/templates/tasks.mustache b/platform/darwin/docs/theme/templates/tasks.mustache similarity index 100% rename from platform/ios/platform/darwin/docs/theme/templates/tasks.mustache rename to platform/darwin/docs/theme/templates/tasks.mustache diff --git a/platform/ios/platform/darwin/loop-files.json b/platform/darwin/loop-files.json similarity index 100% rename from platform/ios/platform/darwin/loop-files.json rename to platform/darwin/loop-files.json diff --git a/platform/ios/platform/darwin/resources/Base.lproj/Foundation.strings b/platform/darwin/resources/Base.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/Base.lproj/Foundation.strings rename to platform/darwin/resources/Base.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/ar.lproj/Foundation.stringsdict b/platform/darwin/resources/ar.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/ar.lproj/Foundation.stringsdict rename to platform/darwin/resources/ar.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/bg.lproj/Foundation.strings b/platform/darwin/resources/bg.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/bg.lproj/Foundation.strings rename to platform/darwin/resources/bg.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/bg.lproj/Foundation.stringsdict b/platform/darwin/resources/bg.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/bg.lproj/Foundation.stringsdict rename to platform/darwin/resources/bg.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/ca.lproj/Foundation.strings b/platform/darwin/resources/ca.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/ca.lproj/Foundation.strings rename to platform/darwin/resources/ca.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/ca.lproj/Foundation.stringsdict b/platform/darwin/resources/ca.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/ca.lproj/Foundation.stringsdict rename to platform/darwin/resources/ca.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/cs.lproj/Foundation.strings b/platform/darwin/resources/cs.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/cs.lproj/Foundation.strings rename to platform/darwin/resources/cs.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/cs.lproj/Foundation.stringsdict b/platform/darwin/resources/cs.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/cs.lproj/Foundation.stringsdict rename to platform/darwin/resources/cs.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/da.lproj/Foundation.strings b/platform/darwin/resources/da.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/da.lproj/Foundation.strings rename to platform/darwin/resources/da.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/da.lproj/Foundation.stringsdict b/platform/darwin/resources/da.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/da.lproj/Foundation.stringsdict rename to platform/darwin/resources/da.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/de.lproj/Foundation.strings b/platform/darwin/resources/de.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/de.lproj/Foundation.strings rename to platform/darwin/resources/de.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/de.lproj/Foundation.stringsdict b/platform/darwin/resources/de.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/de.lproj/Foundation.stringsdict rename to platform/darwin/resources/de.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/en.lproj/Foundation.stringsdict b/platform/darwin/resources/en.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/en.lproj/Foundation.stringsdict rename to platform/darwin/resources/en.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/es.lproj/Foundation.strings b/platform/darwin/resources/es.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/es.lproj/Foundation.strings rename to platform/darwin/resources/es.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/es.lproj/Foundation.stringsdict b/platform/darwin/resources/es.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/es.lproj/Foundation.stringsdict rename to platform/darwin/resources/es.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/fr.lproj/Foundation.strings b/platform/darwin/resources/fr.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/fr.lproj/Foundation.strings rename to platform/darwin/resources/fr.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/fr.lproj/Foundation.stringsdict b/platform/darwin/resources/fr.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/fr.lproj/Foundation.stringsdict rename to platform/darwin/resources/fr.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/gl.lproj/Foundation.strings b/platform/darwin/resources/gl.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/gl.lproj/Foundation.strings rename to platform/darwin/resources/gl.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/gl.lproj/Foundation.stringsdict b/platform/darwin/resources/gl.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/gl.lproj/Foundation.stringsdict rename to platform/darwin/resources/gl.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/he.lproj/Foundation.strings b/platform/darwin/resources/he.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/he.lproj/Foundation.strings rename to platform/darwin/resources/he.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/hu.lproj/Foundation.stringsdict b/platform/darwin/resources/hu.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/hu.lproj/Foundation.stringsdict rename to platform/darwin/resources/hu.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/ja.lproj/Foundation.strings b/platform/darwin/resources/ja.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/ja.lproj/Foundation.strings rename to platform/darwin/resources/ja.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/ko.lproj/Foundation.strings b/platform/darwin/resources/ko.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/ko.lproj/Foundation.strings rename to platform/darwin/resources/ko.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/ko.lproj/Foundation.stringsdict b/platform/darwin/resources/ko.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/ko.lproj/Foundation.stringsdict rename to platform/darwin/resources/ko.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/lt.lproj/Foundation.strings b/platform/darwin/resources/lt.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/lt.lproj/Foundation.strings rename to platform/darwin/resources/lt.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/lt.lproj/Foundation.stringsdict b/platform/darwin/resources/lt.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/lt.lproj/Foundation.stringsdict rename to platform/darwin/resources/lt.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/pl.lproj/Foundation.stringsdict b/platform/darwin/resources/pl.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/pl.lproj/Foundation.stringsdict rename to platform/darwin/resources/pl.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/pt-BR.lproj/Foundation.strings b/platform/darwin/resources/pt-BR.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/pt-BR.lproj/Foundation.strings rename to platform/darwin/resources/pt-BR.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/pt-BR.lproj/Foundation.stringsdict b/platform/darwin/resources/pt-BR.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/pt-BR.lproj/Foundation.stringsdict rename to platform/darwin/resources/pt-BR.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/pt-PT.lproj/Foundation.stringsdict b/platform/darwin/resources/pt-PT.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/pt-PT.lproj/Foundation.stringsdict rename to platform/darwin/resources/pt-PT.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/ru.lproj/Foundation.strings b/platform/darwin/resources/ru.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/ru.lproj/Foundation.strings rename to platform/darwin/resources/ru.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/ru.lproj/Foundation.stringsdict b/platform/darwin/resources/ru.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/ru.lproj/Foundation.stringsdict rename to platform/darwin/resources/ru.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/sv.lproj/Foundation.strings b/platform/darwin/resources/sv.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/sv.lproj/Foundation.strings rename to platform/darwin/resources/sv.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/sv.lproj/Foundation.stringsdict b/platform/darwin/resources/sv.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/sv.lproj/Foundation.stringsdict rename to platform/darwin/resources/sv.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/uk.lproj/Foundation.strings b/platform/darwin/resources/uk.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/uk.lproj/Foundation.strings rename to platform/darwin/resources/uk.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/uk.lproj/Foundation.stringsdict b/platform/darwin/resources/uk.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/uk.lproj/Foundation.stringsdict rename to platform/darwin/resources/uk.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/vi.lproj/Foundation.strings b/platform/darwin/resources/vi.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/vi.lproj/Foundation.strings rename to platform/darwin/resources/vi.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/vi.lproj/Foundation.stringsdict b/platform/darwin/resources/vi.lproj/Foundation.stringsdict similarity index 100% rename from platform/ios/platform/darwin/resources/vi.lproj/Foundation.stringsdict rename to platform/darwin/resources/vi.lproj/Foundation.stringsdict diff --git a/platform/ios/platform/darwin/resources/zh-Hans.lproj/Foundation.strings b/platform/darwin/resources/zh-Hans.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/zh-Hans.lproj/Foundation.strings rename to platform/darwin/resources/zh-Hans.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/resources/zh-Hant.lproj/Foundation.strings b/platform/darwin/resources/zh-Hant.lproj/Foundation.strings similarity index 100% rename from platform/ios/platform/darwin/resources/zh-Hant.lproj/Foundation.strings rename to platform/darwin/resources/zh-Hant.lproj/Foundation.strings diff --git a/platform/ios/platform/darwin/scripts/check-public-symbols.js b/platform/darwin/scripts/check-public-symbols.js old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/darwin/scripts/check-public-symbols.js rename to platform/darwin/scripts/check-public-symbols.js diff --git a/platform/darwin/scripts/check-public-symbols.sh b/platform/darwin/scripts/check-public-symbols.sh new file mode 100755 index 000000000..36b0c052e --- /dev/null +++ b/platform/darwin/scripts/check-public-symbols.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +node platform/darwin/scripts/check-public-symbols.js macOS iOS diff --git a/platform/ios/platform/darwin/scripts/generate-style-code.js b/platform/darwin/scripts/generate-style-code.js old mode 100755 new mode 100644 similarity index 96% rename from platform/ios/platform/darwin/scripts/generate-style-code.js rename to platform/darwin/scripts/generate-style-code.js index 67b2a60d4..33ee6a820 --- a/platform/ios/platform/darwin/scripts/generate-style-code.js +++ b/platform/darwin/scripts/generate-style-code.js @@ -1,19 +1,32 @@ #!/usr/bin/env node 'use strict'; +const { ArgumentParser } = require("argparse"); const fs = require('fs'); const ejs = require('ejs'); const _ = require('lodash'); const colorParser = require('csscolorparser'); const assert = require('assert'); -require('../../../../../scripts/style-code'); +require('../../../scripts/style-code'); +// Parse command line +const args = (() => { + const parser = new ArgumentParser({ + description: "MapLibre Shader Tools" + }); + parser.add_argument("--root", "--r", { + help: "Directory root to place generated code", + required: false + }); + return parser.parse_args(); +})(); + const cocoaConventions = require('./style-spec-cocoa-conventions-v8.json'); const prefix = 'MLN'; const suffix = 'StyleLayer'; -let spec = _.merge(require('../../../scripts/style-spec'), require('./style-spec-overrides-v8.json')); +let spec = _.merge(require('../../../scripts/style-spec-reference/v8'), require('./style-spec-overrides-v8.json')); class ConventionOverride { constructor(val) { @@ -778,17 +791,19 @@ const layerH = ejs.compile(fs.readFileSync('platform/darwin/src/MLNStyleLayer.h. const layerPrivateH = ejs.compile(fs.readFileSync('platform/darwin/src/MLNStyleLayer_Private.h.ejs', 'utf8'), { strict: true }); const layerM = ejs.compile(fs.readFileSync('platform/darwin/src/MLNStyleLayer.mm.ejs', 'utf8'), { strict: true}); const testLayers = ejs.compile(fs.readFileSync('platform/darwin/test/MLNStyleLayerTests.mm.ejs', 'utf8'), { strict: true}); -const forStyleAuthorsMD = ejs.compile(fs.readFileSync('platform/darwin/docs/guides/For Style Authors.md.ejs', 'utf8'), { strict: true }); -const ddsGuideMD = ejs.compile(fs.readFileSync('platform/darwin/docs/guides/Migrating to Expressions.md.ejs', 'utf8'), { strict: true }); -const templatesMD = ejs.compile(fs.readFileSync('platform/darwin/docs/guides/Tile URL Templates.md.ejs', 'utf8'), { strict: true }); +const forStyleAuthorsMD = ejs.compile(fs.readFileSync('platform/darwin/docs/guides/For_Style_Authors.md.ejs', 'utf8'), { strict: true }); +const ddsGuideMD = ejs.compile(fs.readFileSync('platform/darwin/docs/guides/Migrating_to_Expressions.md.ejs', 'utf8'), { strict: true }); +const templatesMD = ejs.compile(fs.readFileSync('platform/darwin/docs/guides/Tile_URL_Templates.md.ejs', 'utf8'), { strict: true }); const lightH = ejs.compile(fs.readFileSync('platform/darwin/src/MLNLight.h.ejs', 'utf8'), {strict: true}); const lightM = ejs.compile(fs.readFileSync('platform/darwin/src/MLNLight.mm.ejs', 'utf8'), {strict: true}); const testLight = ejs.compile(fs.readFileSync('platform/darwin/test/MLNLightTest.mm.ejs', 'utf8'), { strict: true}); -writeIfModified(`platform/darwin/src/MLNLight.h`, duplicatePlatformDecls(lightH({ properties: lightProperties, doc: lightDoc, type: lightType }))); -writeIfModified(`platform/darwin/src/MLNLight.mm`, lightM({ properties: lightProperties, doc: lightDoc, type: lightType })); -writeIfModified(`platform/darwin/test/MLNLightTest.mm`, testLight({ properties: lightProperties, doc: lightDoc, type: lightType })); - +writeIfModified(`platform/darwin/src/MLNLight.h`, duplicatePlatformDecls( + lightH({ properties: lightProperties, doc: lightDoc, type: lightType })), args.root); +writeIfModified(`platform/darwin/src/MLNLight.mm`, + lightM({ properties: lightProperties, doc: lightDoc, type: lightType }), args.root); +writeIfModified(`platform/darwin/test/MLNLightTest.mm`, + testLight({ properties: lightProperties, doc: lightDoc, type: lightType }), args.root); const layers = _(spec.layer.type.values).map((value, layerType) => { const layoutProperties = Object.keys(spec[`layout_${layerType}`]).reduce((memo, name) => { @@ -861,14 +876,18 @@ for (var layer of layers) { renamedPropertiesByLayerType[layer.type] = renamedProperties; } - writeIfModified(`platform/darwin/src/${prefix}${camelize(layer.type)}${suffix}.h`, duplicatePlatformDecls(layerH(layer))); - writeIfModified(`platform/darwin/src/${prefix}${camelize(layer.type)}${suffix}_Private.h`, duplicatePlatformDecls(layerPrivateH(layer))); - writeIfModified(`platform/darwin/src/${prefix}${camelize(layer.type)}${suffix}.mm`, layerM(layer)); - writeIfModified(`platform/darwin/test/${prefix}${camelize(layer.type)}${suffix}Tests.mm`, testLayers(layer)); + writeIfModified(`platform/darwin/src/${prefix}${camelize(layer.type)}${suffix}.h`, + duplicatePlatformDecls(layerH(layer)), args.root); + writeIfModified(`platform/darwin/src/${prefix}${camelize(layer.type)}${suffix}_Private.h`, + duplicatePlatformDecls(layerPrivateH(layer)), args.root); + writeIfModified(`platform/darwin/src/${prefix}${camelize(layer.type)}${suffix}.mm`, + layerM(layer), args.root); + writeIfModified(`platform/darwin/test/${prefix}${camelize(layer.type)}${suffix}Tests.mm`, + testLayers(layer), args.root); } // Extract examples for guides from unit tests. -let examplesSrc = fs.readFileSync('platform/darwin/test/MLNDocumentationGuideTests.swift', 'utf8'); +/*let examplesSrc = fs.readFileSync('platform/darwin/test/MLNDocumentationGuideTests.swift', 'utf8'); const exampleRegex = /func test([\w$]+)\s*\(\)\s*\{[^]*?\n([ \t]+)\/\/#-example-code\n([^]+?)\n\2\/\/#-end-example-code\n/gm; let examples = {}; @@ -906,21 +925,21 @@ writeIfModified(`platform/ios/docs/guides/For Style Authors.md`, forStyleAuthors os: 'iOS', renamedProperties: renamedPropertiesByLayerType, layers: layers, -})); +}), args.root); writeIfModified(`platform/macos/docs/guides/For Style Authors.md`, forStyleAuthorsMD({ os: 'macOS', renamedProperties: renamedPropertiesByLayerType, layers: layers, -})); +}), args.root); writeIfModified(`platform/ios/docs/guides/Migrating to Expressions.md`, ddsGuideMD({ os: 'iOS', -})); +}), args.root); writeIfModified(`platform/macos/docs/guides/Migrating to Expressions.md`, ddsGuideMD({ os: 'macOS', -})); +}), args.root); writeIfModified(`platform/ios/docs/guides/Tile URL Templates.md`, templatesMD({ os: 'iOS', -})); +}), args.root); writeIfModified(`platform/macos/docs/guides/Tile URL Templates.md`, templatesMD({ os: 'macOS', -})); +}), args.root);*/ \ No newline at end of file diff --git a/platform/ios/platform/darwin/scripts/style-spec-cocoa-conventions-v8.json b/platform/darwin/scripts/style-spec-cocoa-conventions-v8.json similarity index 100% rename from platform/ios/platform/darwin/scripts/style-spec-cocoa-conventions-v8.json rename to platform/darwin/scripts/style-spec-cocoa-conventions-v8.json diff --git a/platform/ios/platform/darwin/scripts/style-spec-overrides-v8.json b/platform/darwin/scripts/style-spec-overrides-v8.json similarity index 100% rename from platform/ios/platform/darwin/scripts/style-spec-overrides-v8.json rename to platform/darwin/scripts/style-spec-overrides-v8.json diff --git a/platform/ios/platform/darwin/scripts/update-examples.js b/platform/darwin/scripts/update-examples.js old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/darwin/scripts/update-examples.js rename to platform/darwin/scripts/update-examples.js diff --git a/platform/ios/platform/darwin/src/MLNAnnotation.h b/platform/darwin/src/MLNAnnotation.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNAnnotation.h rename to platform/darwin/src/MLNAnnotation.h diff --git a/platform/ios/platform/darwin/src/MLNAttributedExpression.h b/platform/darwin/src/MLNAttributedExpression.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNAttributedExpression.h rename to platform/darwin/src/MLNAttributedExpression.h diff --git a/platform/ios/platform/darwin/src/MLNAttributedExpression.m b/platform/darwin/src/MLNAttributedExpression.m similarity index 100% rename from platform/ios/platform/darwin/src/MLNAttributedExpression.m rename to platform/darwin/src/MLNAttributedExpression.m diff --git a/platform/ios/platform/darwin/src/MLNAttributionInfo.h b/platform/darwin/src/MLNAttributionInfo.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNAttributionInfo.h rename to platform/darwin/src/MLNAttributionInfo.h diff --git a/platform/ios/platform/darwin/src/MLNAttributionInfo.mm b/platform/darwin/src/MLNAttributionInfo.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNAttributionInfo.mm rename to platform/darwin/src/MLNAttributionInfo.mm diff --git a/platform/ios/platform/darwin/src/MLNAttributionInfo_Private.h b/platform/darwin/src/MLNAttributionInfo_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNAttributionInfo_Private.h rename to platform/darwin/src/MLNAttributionInfo_Private.h diff --git a/platform/ios/platform/darwin/src/MLNClockDirectionFormatter.h b/platform/darwin/src/MLNClockDirectionFormatter.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNClockDirectionFormatter.h rename to platform/darwin/src/MLNClockDirectionFormatter.h diff --git a/platform/ios/platform/darwin/src/MLNClockDirectionFormatter.m b/platform/darwin/src/MLNClockDirectionFormatter.m similarity index 100% rename from platform/ios/platform/darwin/src/MLNClockDirectionFormatter.m rename to platform/darwin/src/MLNClockDirectionFormatter.m diff --git a/platform/ios/platform/darwin/src/MLNCluster.h b/platform/darwin/src/MLNCluster.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNCluster.h rename to platform/darwin/src/MLNCluster.h diff --git a/platform/ios/platform/darwin/src/MLNCompassDirectionFormatter.h b/platform/darwin/src/MLNCompassDirectionFormatter.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNCompassDirectionFormatter.h rename to platform/darwin/src/MLNCompassDirectionFormatter.h diff --git a/platform/ios/platform/darwin/src/MLNCompassDirectionFormatter.m b/platform/darwin/src/MLNCompassDirectionFormatter.m similarity index 100% rename from platform/ios/platform/darwin/src/MLNCompassDirectionFormatter.m rename to platform/darwin/src/MLNCompassDirectionFormatter.m diff --git a/platform/ios/platform/darwin/src/MLNComputedShapeSource.h b/platform/darwin/src/MLNComputedShapeSource.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNComputedShapeSource.h rename to platform/darwin/src/MLNComputedShapeSource.h diff --git a/platform/ios/platform/darwin/src/MLNComputedShapeSource.mm b/platform/darwin/src/MLNComputedShapeSource.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNComputedShapeSource.mm rename to platform/darwin/src/MLNComputedShapeSource.mm diff --git a/platform/ios/platform/darwin/src/MLNComputedShapeSource_Private.h b/platform/darwin/src/MLNComputedShapeSource_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNComputedShapeSource_Private.h rename to platform/darwin/src/MLNComputedShapeSource_Private.h diff --git a/platform/ios/platform/darwin/src/MLNConversion.h b/platform/darwin/src/MLNConversion.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNConversion.h rename to platform/darwin/src/MLNConversion.h diff --git a/platform/ios/platform/darwin/src/MLNCoordinateFormatter.h b/platform/darwin/src/MLNCoordinateFormatter.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNCoordinateFormatter.h rename to platform/darwin/src/MLNCoordinateFormatter.h diff --git a/platform/ios/platform/darwin/src/MLNCoordinateFormatter.m b/platform/darwin/src/MLNCoordinateFormatter.m similarity index 100% rename from platform/ios/platform/darwin/src/MLNCoordinateFormatter.m rename to platform/darwin/src/MLNCoordinateFormatter.m diff --git a/platform/ios/platform/darwin/src/MLNDefaultStyle.h b/platform/darwin/src/MLNDefaultStyle.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNDefaultStyle.h rename to platform/darwin/src/MLNDefaultStyle.h diff --git a/platform/ios/platform/darwin/src/MLNDefaultStyle.mm b/platform/darwin/src/MLNDefaultStyle.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNDefaultStyle.mm rename to platform/darwin/src/MLNDefaultStyle.mm diff --git a/platform/ios/platform/darwin/src/MLNDistanceFormatter.h b/platform/darwin/src/MLNDistanceFormatter.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNDistanceFormatter.h rename to platform/darwin/src/MLNDistanceFormatter.h diff --git a/platform/ios/platform/darwin/src/MLNDistanceFormatter.m b/platform/darwin/src/MLNDistanceFormatter.m similarity index 100% rename from platform/ios/platform/darwin/src/MLNDistanceFormatter.m rename to platform/darwin/src/MLNDistanceFormatter.m diff --git a/platform/ios/platform/darwin/src/MLNFeature.h b/platform/darwin/src/MLNFeature.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNFeature.h rename to platform/darwin/src/MLNFeature.h diff --git a/platform/ios/platform/darwin/src/MLNFeature.mm b/platform/darwin/src/MLNFeature.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNFeature.mm rename to platform/darwin/src/MLNFeature.mm diff --git a/platform/ios/platform/darwin/src/MLNFeature_Private.h b/platform/darwin/src/MLNFeature_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNFeature_Private.h rename to platform/darwin/src/MLNFeature_Private.h diff --git a/platform/ios/platform/darwin/src/MLNForegroundStyleLayer.h b/platform/darwin/src/MLNForegroundStyleLayer.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNForegroundStyleLayer.h rename to platform/darwin/src/MLNForegroundStyleLayer.h diff --git a/platform/ios/platform/darwin/src/MLNForegroundStyleLayer.mm b/platform/darwin/src/MLNForegroundStyleLayer.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNForegroundStyleLayer.mm rename to platform/darwin/src/MLNForegroundStyleLayer.mm diff --git a/platform/ios/platform/darwin/src/MLNFoundation.h b/platform/darwin/src/MLNFoundation.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNFoundation.h rename to platform/darwin/src/MLNFoundation.h diff --git a/platform/ios/platform/darwin/src/MLNFoundation.mm b/platform/darwin/src/MLNFoundation.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNFoundation.mm rename to platform/darwin/src/MLNFoundation.mm diff --git a/platform/ios/platform/darwin/src/MLNFoundation_Private.h b/platform/darwin/src/MLNFoundation_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNFoundation_Private.h rename to platform/darwin/src/MLNFoundation_Private.h diff --git a/platform/ios/platform/darwin/src/MLNGeometry.h b/platform/darwin/src/MLNGeometry.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNGeometry.h rename to platform/darwin/src/MLNGeometry.h diff --git a/platform/ios/platform/darwin/src/MLNGeometry.mm b/platform/darwin/src/MLNGeometry.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNGeometry.mm rename to platform/darwin/src/MLNGeometry.mm diff --git a/platform/ios/platform/darwin/src/MLNGeometry_Private.h b/platform/darwin/src/MLNGeometry_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNGeometry_Private.h rename to platform/darwin/src/MLNGeometry_Private.h diff --git a/platform/ios/platform/darwin/src/MLNImageSource.h b/platform/darwin/src/MLNImageSource.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNImageSource.h rename to platform/darwin/src/MLNImageSource.h diff --git a/platform/ios/platform/darwin/src/MLNImageSource.mm b/platform/darwin/src/MLNImageSource.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNImageSource.mm rename to platform/darwin/src/MLNImageSource.mm diff --git a/platform/ios/platform/darwin/src/MLNLight.h.ejs b/platform/darwin/src/MLNLight.h.ejs similarity index 100% rename from platform/ios/platform/darwin/src/MLNLight.h.ejs rename to platform/darwin/src/MLNLight.h.ejs diff --git a/platform/ios/platform/darwin/src/MLNLight.mm.ejs b/platform/darwin/src/MLNLight.mm.ejs similarity index 100% rename from platform/ios/platform/darwin/src/MLNLight.mm.ejs rename to platform/darwin/src/MLNLight.mm.ejs diff --git a/platform/ios/platform/darwin/src/MLNLight_Private.h b/platform/darwin/src/MLNLight_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNLight_Private.h rename to platform/darwin/src/MLNLight_Private.h diff --git a/platform/ios/platform/darwin/src/MLNLocationManager.h b/platform/darwin/src/MLNLocationManager.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNLocationManager.h rename to platform/darwin/src/MLNLocationManager.h diff --git a/platform/ios/platform/darwin/src/MLNLocationManager.m b/platform/darwin/src/MLNLocationManager.m similarity index 100% rename from platform/ios/platform/darwin/src/MLNLocationManager.m rename to platform/darwin/src/MLNLocationManager.m diff --git a/platform/ios/platform/darwin/src/MLNLocationManager_Private.h b/platform/darwin/src/MLNLocationManager_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNLocationManager_Private.h rename to platform/darwin/src/MLNLocationManager_Private.h diff --git a/platform/ios/platform/darwin/src/MLNLoggingConfiguration.h b/platform/darwin/src/MLNLoggingConfiguration.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNLoggingConfiguration.h rename to platform/darwin/src/MLNLoggingConfiguration.h diff --git a/platform/ios/platform/darwin/src/MLNLoggingConfiguration.mm b/platform/darwin/src/MLNLoggingConfiguration.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNLoggingConfiguration.mm rename to platform/darwin/src/MLNLoggingConfiguration.mm diff --git a/platform/ios/platform/darwin/src/MLNLoggingConfiguration_Private.h b/platform/darwin/src/MLNLoggingConfiguration_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNLoggingConfiguration_Private.h rename to platform/darwin/src/MLNLoggingConfiguration_Private.h diff --git a/platform/ios/platform/darwin/src/MLNMapCamera.h b/platform/darwin/src/MLNMapCamera.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNMapCamera.h rename to platform/darwin/src/MLNMapCamera.h diff --git a/platform/ios/platform/darwin/src/MLNMapCamera.mm b/platform/darwin/src/MLNMapCamera.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNMapCamera.mm rename to platform/darwin/src/MLNMapCamera.mm diff --git a/platform/ios/platform/darwin/src/MLNMapSnapshotter.h b/platform/darwin/src/MLNMapSnapshotter.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNMapSnapshotter.h rename to platform/darwin/src/MLNMapSnapshotter.h diff --git a/platform/ios/platform/darwin/src/MLNMapSnapshotter.mm b/platform/darwin/src/MLNMapSnapshotter.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNMapSnapshotter.mm rename to platform/darwin/src/MLNMapSnapshotter.mm diff --git a/platform/ios/platform/darwin/src/MLNMapSnapshotter_Private.h b/platform/darwin/src/MLNMapSnapshotter_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNMapSnapshotter_Private.h rename to platform/darwin/src/MLNMapSnapshotter_Private.h diff --git a/platform/ios/platform/darwin/src/MLNMultiPoint.h b/platform/darwin/src/MLNMultiPoint.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNMultiPoint.h rename to platform/darwin/src/MLNMultiPoint.h diff --git a/platform/ios/platform/darwin/src/MLNMultiPoint.mm b/platform/darwin/src/MLNMultiPoint.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNMultiPoint.mm rename to platform/darwin/src/MLNMultiPoint.mm diff --git a/platform/ios/platform/darwin/src/MLNMultiPoint_Private.h b/platform/darwin/src/MLNMultiPoint_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNMultiPoint_Private.h rename to platform/darwin/src/MLNMultiPoint_Private.h diff --git a/platform/ios/platform/darwin/src/MLNNetworkConfiguration.h b/platform/darwin/src/MLNNetworkConfiguration.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNNetworkConfiguration.h rename to platform/darwin/src/MLNNetworkConfiguration.h diff --git a/platform/ios/platform/darwin/src/MLNNetworkConfiguration.mm b/platform/darwin/src/MLNNetworkConfiguration.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNNetworkConfiguration.mm rename to platform/darwin/src/MLNNetworkConfiguration.mm diff --git a/platform/ios/platform/darwin/src/MLNNetworkConfiguration_Private.h b/platform/darwin/src/MLNNetworkConfiguration_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNNetworkConfiguration_Private.h rename to platform/darwin/src/MLNNetworkConfiguration_Private.h diff --git a/platform/ios/platform/darwin/src/MLNOfflinePack.h b/platform/darwin/src/MLNOfflinePack.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNOfflinePack.h rename to platform/darwin/src/MLNOfflinePack.h diff --git a/platform/ios/platform/darwin/src/MLNOfflinePack.mm b/platform/darwin/src/MLNOfflinePack.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNOfflinePack.mm rename to platform/darwin/src/MLNOfflinePack.mm diff --git a/platform/ios/platform/darwin/src/MLNOfflinePack_Private.h b/platform/darwin/src/MLNOfflinePack_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNOfflinePack_Private.h rename to platform/darwin/src/MLNOfflinePack_Private.h diff --git a/platform/ios/platform/darwin/src/MLNOfflineRegion.h b/platform/darwin/src/MLNOfflineRegion.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNOfflineRegion.h rename to platform/darwin/src/MLNOfflineRegion.h diff --git a/platform/ios/platform/darwin/src/MLNOfflineRegion_Private.h b/platform/darwin/src/MLNOfflineRegion_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNOfflineRegion_Private.h rename to platform/darwin/src/MLNOfflineRegion_Private.h diff --git a/platform/ios/platform/darwin/src/MLNOfflineStorage.h b/platform/darwin/src/MLNOfflineStorage.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNOfflineStorage.h rename to platform/darwin/src/MLNOfflineStorage.h diff --git a/platform/ios/platform/darwin/src/MLNOfflineStorage.mm b/platform/darwin/src/MLNOfflineStorage.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNOfflineStorage.mm rename to platform/darwin/src/MLNOfflineStorage.mm diff --git a/platform/ios/platform/darwin/src/MLNOfflineStorage_Private.h b/platform/darwin/src/MLNOfflineStorage_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNOfflineStorage_Private.h rename to platform/darwin/src/MLNOfflineStorage_Private.h diff --git a/platform/ios/platform/darwin/src/MLNOpenGLStyleLayer.h b/platform/darwin/src/MLNOpenGLStyleLayer.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNOpenGLStyleLayer.h rename to platform/darwin/src/MLNOpenGLStyleLayer.h diff --git a/platform/ios/platform/darwin/src/MLNOpenGLStyleLayer.mm b/platform/darwin/src/MLNOpenGLStyleLayer.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNOpenGLStyleLayer.mm rename to platform/darwin/src/MLNOpenGLStyleLayer.mm diff --git a/platform/ios/platform/darwin/src/MLNOpenGLStyleLayer_Private.h b/platform/darwin/src/MLNOpenGLStyleLayer_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNOpenGLStyleLayer_Private.h rename to platform/darwin/src/MLNOpenGLStyleLayer_Private.h diff --git a/platform/ios/platform/darwin/src/MLNOverlay.h b/platform/darwin/src/MLNOverlay.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNOverlay.h rename to platform/darwin/src/MLNOverlay.h diff --git a/platform/ios/platform/darwin/src/MLNPointAnnotation.h b/platform/darwin/src/MLNPointAnnotation.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNPointAnnotation.h rename to platform/darwin/src/MLNPointAnnotation.h diff --git a/platform/ios/platform/darwin/src/MLNPointAnnotation.mm b/platform/darwin/src/MLNPointAnnotation.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNPointAnnotation.mm rename to platform/darwin/src/MLNPointAnnotation.mm diff --git a/platform/ios/platform/darwin/src/MLNPointCollection.h b/platform/darwin/src/MLNPointCollection.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNPointCollection.h rename to platform/darwin/src/MLNPointCollection.h diff --git a/platform/ios/platform/darwin/src/MLNPointCollection.mm b/platform/darwin/src/MLNPointCollection.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNPointCollection.mm rename to platform/darwin/src/MLNPointCollection.mm diff --git a/platform/ios/platform/darwin/src/MLNPointCollection_Private.h b/platform/darwin/src/MLNPointCollection_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNPointCollection_Private.h rename to platform/darwin/src/MLNPointCollection_Private.h diff --git a/platform/ios/platform/darwin/src/MLNPolygon.h b/platform/darwin/src/MLNPolygon.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNPolygon.h rename to platform/darwin/src/MLNPolygon.h diff --git a/platform/ios/platform/darwin/src/MLNPolygon.mm b/platform/darwin/src/MLNPolygon.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNPolygon.mm rename to platform/darwin/src/MLNPolygon.mm diff --git a/platform/ios/platform/darwin/src/MLNPolygon_Private.h b/platform/darwin/src/MLNPolygon_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNPolygon_Private.h rename to platform/darwin/src/MLNPolygon_Private.h diff --git a/platform/ios/platform/darwin/src/MLNPolyline.h b/platform/darwin/src/MLNPolyline.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNPolyline.h rename to platform/darwin/src/MLNPolyline.h diff --git a/platform/ios/platform/darwin/src/MLNPolyline.mm b/platform/darwin/src/MLNPolyline.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNPolyline.mm rename to platform/darwin/src/MLNPolyline.mm diff --git a/platform/ios/platform/darwin/src/MLNPolyline_Private.h b/platform/darwin/src/MLNPolyline_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNPolyline_Private.h rename to platform/darwin/src/MLNPolyline_Private.h diff --git a/platform/ios/platform/darwin/src/MLNRasterDEMSource.h b/platform/darwin/src/MLNRasterDEMSource.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNRasterDEMSource.h rename to platform/darwin/src/MLNRasterDEMSource.h diff --git a/platform/ios/platform/darwin/src/MLNRasterDEMSource.mm b/platform/darwin/src/MLNRasterDEMSource.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNRasterDEMSource.mm rename to platform/darwin/src/MLNRasterDEMSource.mm diff --git a/platform/ios/platform/darwin/src/MLNRasterTileSource.h b/platform/darwin/src/MLNRasterTileSource.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNRasterTileSource.h rename to platform/darwin/src/MLNRasterTileSource.h diff --git a/platform/ios/platform/darwin/src/MLNRasterTileSource.mm b/platform/darwin/src/MLNRasterTileSource.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNRasterTileSource.mm rename to platform/darwin/src/MLNRasterTileSource.mm diff --git a/platform/ios/platform/darwin/src/MLNRasterTileSource_Private.h b/platform/darwin/src/MLNRasterTileSource_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNRasterTileSource_Private.h rename to platform/darwin/src/MLNRasterTileSource_Private.h diff --git a/platform/ios/platform/darwin/src/MLNReachability.h b/platform/darwin/src/MLNReachability.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNReachability.h rename to platform/darwin/src/MLNReachability.h diff --git a/platform/ios/platform/darwin/src/MLNReachability.m b/platform/darwin/src/MLNReachability.m similarity index 100% rename from platform/ios/platform/darwin/src/MLNReachability.m rename to platform/darwin/src/MLNReachability.m diff --git a/platform/ios/platform/darwin/src/MLNRendererConfiguration.h b/platform/darwin/src/MLNRendererConfiguration.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNRendererConfiguration.h rename to platform/darwin/src/MLNRendererConfiguration.h diff --git a/platform/ios/platform/darwin/src/MLNRendererConfiguration.m b/platform/darwin/src/MLNRendererConfiguration.m similarity index 100% rename from platform/ios/platform/darwin/src/MLNRendererConfiguration.m rename to platform/darwin/src/MLNRendererConfiguration.m diff --git a/platform/ios/platform/darwin/src/MLNRendererFrontend.h b/platform/darwin/src/MLNRendererFrontend.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNRendererFrontend.h rename to platform/darwin/src/MLNRendererFrontend.h diff --git a/platform/ios/platform/darwin/src/MLNSettings.h b/platform/darwin/src/MLNSettings.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNSettings.h rename to platform/darwin/src/MLNSettings.h diff --git a/platform/ios/platform/darwin/src/MLNSettings.mm b/platform/darwin/src/MLNSettings.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNSettings.mm rename to platform/darwin/src/MLNSettings.mm diff --git a/platform/ios/platform/darwin/src/MLNSettings_Private.h b/platform/darwin/src/MLNSettings_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNSettings_Private.h rename to platform/darwin/src/MLNSettings_Private.h diff --git a/platform/ios/platform/darwin/src/MLNShape.h b/platform/darwin/src/MLNShape.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNShape.h rename to platform/darwin/src/MLNShape.h diff --git a/platform/ios/platform/darwin/src/MLNShape.mm b/platform/darwin/src/MLNShape.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNShape.mm rename to platform/darwin/src/MLNShape.mm diff --git a/platform/ios/platform/darwin/src/MLNShapeCollection.h b/platform/darwin/src/MLNShapeCollection.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNShapeCollection.h rename to platform/darwin/src/MLNShapeCollection.h diff --git a/platform/ios/platform/darwin/src/MLNShapeCollection.mm b/platform/darwin/src/MLNShapeCollection.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNShapeCollection.mm rename to platform/darwin/src/MLNShapeCollection.mm diff --git a/platform/ios/platform/darwin/src/MLNShapeOfflineRegion.h b/platform/darwin/src/MLNShapeOfflineRegion.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNShapeOfflineRegion.h rename to platform/darwin/src/MLNShapeOfflineRegion.h diff --git a/platform/ios/platform/darwin/src/MLNShapeOfflineRegion.mm b/platform/darwin/src/MLNShapeOfflineRegion.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNShapeOfflineRegion.mm rename to platform/darwin/src/MLNShapeOfflineRegion.mm diff --git a/platform/ios/platform/darwin/src/MLNShapeOfflineRegion_Private.h b/platform/darwin/src/MLNShapeOfflineRegion_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNShapeOfflineRegion_Private.h rename to platform/darwin/src/MLNShapeOfflineRegion_Private.h diff --git a/platform/ios/platform/darwin/src/MLNShapeSource.h b/platform/darwin/src/MLNShapeSource.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNShapeSource.h rename to platform/darwin/src/MLNShapeSource.h diff --git a/platform/ios/platform/darwin/src/MLNShapeSource.mm b/platform/darwin/src/MLNShapeSource.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNShapeSource.mm rename to platform/darwin/src/MLNShapeSource.mm diff --git a/platform/ios/platform/darwin/src/MLNShapeSource_Private.h b/platform/darwin/src/MLNShapeSource_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNShapeSource_Private.h rename to platform/darwin/src/MLNShapeSource_Private.h diff --git a/platform/ios/platform/darwin/src/MLNShape_Private.h b/platform/darwin/src/MLNShape_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNShape_Private.h rename to platform/darwin/src/MLNShape_Private.h diff --git a/platform/ios/platform/darwin/src/MLNSource.h b/platform/darwin/src/MLNSource.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNSource.h rename to platform/darwin/src/MLNSource.h diff --git a/platform/ios/platform/darwin/src/MLNSource.mm b/platform/darwin/src/MLNSource.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNSource.mm rename to platform/darwin/src/MLNSource.mm diff --git a/platform/ios/platform/darwin/src/MLNSource_Private.h b/platform/darwin/src/MLNSource_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNSource_Private.h rename to platform/darwin/src/MLNSource_Private.h diff --git a/platform/ios/platform/darwin/src/MLNStyle.h b/platform/darwin/src/MLNStyle.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNStyle.h rename to platform/darwin/src/MLNStyle.h diff --git a/platform/ios/platform/darwin/src/MLNStyle.mm b/platform/darwin/src/MLNStyle.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNStyle.mm rename to platform/darwin/src/MLNStyle.mm diff --git a/platform/ios/platform/darwin/src/MLNStyleLayer.h b/platform/darwin/src/MLNStyleLayer.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNStyleLayer.h rename to platform/darwin/src/MLNStyleLayer.h diff --git a/platform/ios/platform/darwin/src/MLNStyleLayer.h.ejs b/platform/darwin/src/MLNStyleLayer.h.ejs similarity index 100% rename from platform/ios/platform/darwin/src/MLNStyleLayer.h.ejs rename to platform/darwin/src/MLNStyleLayer.h.ejs diff --git a/platform/ios/platform/darwin/src/MLNStyleLayer.mm b/platform/darwin/src/MLNStyleLayer.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNStyleLayer.mm rename to platform/darwin/src/MLNStyleLayer.mm diff --git a/platform/ios/platform/darwin/src/MLNStyleLayer.mm.ejs b/platform/darwin/src/MLNStyleLayer.mm.ejs similarity index 100% rename from platform/ios/platform/darwin/src/MLNStyleLayer.mm.ejs rename to platform/darwin/src/MLNStyleLayer.mm.ejs diff --git a/platform/ios/platform/darwin/src/MLNStyleLayerManager.h b/platform/darwin/src/MLNStyleLayerManager.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNStyleLayerManager.h rename to platform/darwin/src/MLNStyleLayerManager.h diff --git a/platform/ios/platform/darwin/src/MLNStyleLayerManager.mm b/platform/darwin/src/MLNStyleLayerManager.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNStyleLayerManager.mm rename to platform/darwin/src/MLNStyleLayerManager.mm diff --git a/platform/ios/platform/darwin/src/MLNStyleLayer_Private.h b/platform/darwin/src/MLNStyleLayer_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNStyleLayer_Private.h rename to platform/darwin/src/MLNStyleLayer_Private.h diff --git a/platform/ios/platform/darwin/src/MLNStyleLayer_Private.h.ejs b/platform/darwin/src/MLNStyleLayer_Private.h.ejs similarity index 100% rename from platform/ios/platform/darwin/src/MLNStyleLayer_Private.h.ejs rename to platform/darwin/src/MLNStyleLayer_Private.h.ejs diff --git a/platform/ios/platform/darwin/src/MLNStyleValue.h b/platform/darwin/src/MLNStyleValue.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNStyleValue.h rename to platform/darwin/src/MLNStyleValue.h diff --git a/platform/ios/platform/darwin/src/MLNStyleValue.mm b/platform/darwin/src/MLNStyleValue.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNStyleValue.mm rename to platform/darwin/src/MLNStyleValue.mm diff --git a/platform/ios/platform/darwin/src/MLNStyleValue_Private.h b/platform/darwin/src/MLNStyleValue_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNStyleValue_Private.h rename to platform/darwin/src/MLNStyleValue_Private.h diff --git a/platform/ios/platform/darwin/src/MLNStyle_Private.h b/platform/darwin/src/MLNStyle_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNStyle_Private.h rename to platform/darwin/src/MLNStyle_Private.h diff --git a/platform/ios/platform/darwin/src/MLNTilePyramidOfflineRegion.h b/platform/darwin/src/MLNTilePyramidOfflineRegion.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNTilePyramidOfflineRegion.h rename to platform/darwin/src/MLNTilePyramidOfflineRegion.h diff --git a/platform/ios/platform/darwin/src/MLNTilePyramidOfflineRegion.mm b/platform/darwin/src/MLNTilePyramidOfflineRegion.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNTilePyramidOfflineRegion.mm rename to platform/darwin/src/MLNTilePyramidOfflineRegion.mm diff --git a/platform/ios/platform/darwin/src/MLNTilePyramidOfflineRegion_Private.h b/platform/darwin/src/MLNTilePyramidOfflineRegion_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNTilePyramidOfflineRegion_Private.h rename to platform/darwin/src/MLNTilePyramidOfflineRegion_Private.h diff --git a/platform/ios/platform/darwin/src/MLNTileServerOptions.h b/platform/darwin/src/MLNTileServerOptions.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNTileServerOptions.h rename to platform/darwin/src/MLNTileServerOptions.h diff --git a/platform/ios/platform/darwin/src/MLNTileServerOptions.mm b/platform/darwin/src/MLNTileServerOptions.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNTileServerOptions.mm rename to platform/darwin/src/MLNTileServerOptions.mm diff --git a/platform/ios/platform/darwin/src/MLNTileSource.h b/platform/darwin/src/MLNTileSource.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNTileSource.h rename to platform/darwin/src/MLNTileSource.h diff --git a/platform/ios/platform/darwin/src/MLNTileSource.mm b/platform/darwin/src/MLNTileSource.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNTileSource.mm rename to platform/darwin/src/MLNTileSource.mm diff --git a/platform/ios/platform/darwin/src/MLNTileSource_Private.h b/platform/darwin/src/MLNTileSource_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNTileSource_Private.h rename to platform/darwin/src/MLNTileSource_Private.h diff --git a/platform/ios/platform/darwin/src/MLNTypes.h b/platform/darwin/src/MLNTypes.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNTypes.h rename to platform/darwin/src/MLNTypes.h diff --git a/platform/ios/platform/darwin/src/MLNTypes.m b/platform/darwin/src/MLNTypes.m similarity index 100% rename from platform/ios/platform/darwin/src/MLNTypes.m rename to platform/darwin/src/MLNTypes.m diff --git a/platform/ios/platform/darwin/src/MLNValueEvaluator.h b/platform/darwin/src/MLNValueEvaluator.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNValueEvaluator.h rename to platform/darwin/src/MLNValueEvaluator.h diff --git a/platform/ios/platform/darwin/src/MLNVectorStyleLayer.h b/platform/darwin/src/MLNVectorStyleLayer.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNVectorStyleLayer.h rename to platform/darwin/src/MLNVectorStyleLayer.h diff --git a/platform/ios/platform/darwin/src/MLNVectorStyleLayer.mm b/platform/darwin/src/MLNVectorStyleLayer.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNVectorStyleLayer.mm rename to platform/darwin/src/MLNVectorStyleLayer.mm diff --git a/platform/ios/platform/darwin/src/MLNVectorTileSource.h b/platform/darwin/src/MLNVectorTileSource.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNVectorTileSource.h rename to platform/darwin/src/MLNVectorTileSource.h diff --git a/platform/ios/platform/darwin/src/MLNVectorTileSource.mm b/platform/darwin/src/MLNVectorTileSource.mm similarity index 100% rename from platform/ios/platform/darwin/src/MLNVectorTileSource.mm rename to platform/darwin/src/MLNVectorTileSource.mm diff --git a/platform/ios/platform/darwin/src/MLNVectorTileSource_Private.h b/platform/darwin/src/MLNVectorTileSource_Private.h similarity index 100% rename from platform/ios/platform/darwin/src/MLNVectorTileSource_Private.h rename to platform/darwin/src/MLNVectorTileSource_Private.h diff --git a/platform/ios/platform/darwin/src/NSArray+MLNAdditions.h b/platform/darwin/src/NSArray+MLNAdditions.h similarity index 100% rename from platform/ios/platform/darwin/src/NSArray+MLNAdditions.h rename to platform/darwin/src/NSArray+MLNAdditions.h diff --git a/platform/ios/platform/darwin/src/NSArray+MLNAdditions.mm b/platform/darwin/src/NSArray+MLNAdditions.mm similarity index 100% rename from platform/ios/platform/darwin/src/NSArray+MLNAdditions.mm rename to platform/darwin/src/NSArray+MLNAdditions.mm diff --git a/platform/ios/platform/darwin/src/NSBundle+MLNAdditions.h b/platform/darwin/src/NSBundle+MLNAdditions.h similarity index 100% rename from platform/ios/platform/darwin/src/NSBundle+MLNAdditions.h rename to platform/darwin/src/NSBundle+MLNAdditions.h diff --git a/platform/ios/platform/darwin/src/NSBundle+MLNAdditions.mm b/platform/darwin/src/NSBundle+MLNAdditions.mm similarity index 100% rename from platform/ios/platform/darwin/src/NSBundle+MLNAdditions.mm rename to platform/darwin/src/NSBundle+MLNAdditions.mm diff --git a/platform/ios/platform/darwin/src/NSCoder+MLNAdditions.h b/platform/darwin/src/NSCoder+MLNAdditions.h similarity index 100% rename from platform/ios/platform/darwin/src/NSCoder+MLNAdditions.h rename to platform/darwin/src/NSCoder+MLNAdditions.h diff --git a/platform/ios/platform/darwin/src/NSCoder+MLNAdditions.mm b/platform/darwin/src/NSCoder+MLNAdditions.mm similarity index 100% rename from platform/ios/platform/darwin/src/NSCoder+MLNAdditions.mm rename to platform/darwin/src/NSCoder+MLNAdditions.mm diff --git a/platform/ios/platform/darwin/src/NSComparisonPredicate+MLNAdditions.h b/platform/darwin/src/NSComparisonPredicate+MLNAdditions.h similarity index 100% rename from platform/ios/platform/darwin/src/NSComparisonPredicate+MLNAdditions.h rename to platform/darwin/src/NSComparisonPredicate+MLNAdditions.h diff --git a/platform/ios/platform/darwin/src/NSComparisonPredicate+MLNAdditions.mm b/platform/darwin/src/NSComparisonPredicate+MLNAdditions.mm similarity index 100% rename from platform/ios/platform/darwin/src/NSComparisonPredicate+MLNAdditions.mm rename to platform/darwin/src/NSComparisonPredicate+MLNAdditions.mm diff --git a/platform/ios/platform/darwin/src/NSCompoundPredicate+MLNAdditions.h b/platform/darwin/src/NSCompoundPredicate+MLNAdditions.h similarity index 100% rename from platform/ios/platform/darwin/src/NSCompoundPredicate+MLNAdditions.h rename to platform/darwin/src/NSCompoundPredicate+MLNAdditions.h diff --git a/platform/ios/platform/darwin/src/NSCompoundPredicate+MLNAdditions.mm b/platform/darwin/src/NSCompoundPredicate+MLNAdditions.mm similarity index 100% rename from platform/ios/platform/darwin/src/NSCompoundPredicate+MLNAdditions.mm rename to platform/darwin/src/NSCompoundPredicate+MLNAdditions.mm diff --git a/platform/ios/platform/darwin/src/NSDate+MLNAdditions.h b/platform/darwin/src/NSDate+MLNAdditions.h similarity index 100% rename from platform/ios/platform/darwin/src/NSDate+MLNAdditions.h rename to platform/darwin/src/NSDate+MLNAdditions.h diff --git a/platform/ios/platform/darwin/src/NSDate+MLNAdditions.mm b/platform/darwin/src/NSDate+MLNAdditions.mm similarity index 100% rename from platform/ios/platform/darwin/src/NSDate+MLNAdditions.mm rename to platform/darwin/src/NSDate+MLNAdditions.mm diff --git a/platform/ios/platform/darwin/src/NSDictionary+MLNAdditions.h b/platform/darwin/src/NSDictionary+MLNAdditions.h similarity index 100% rename from platform/ios/platform/darwin/src/NSDictionary+MLNAdditions.h rename to platform/darwin/src/NSDictionary+MLNAdditions.h diff --git a/platform/ios/platform/darwin/src/NSDictionary+MLNAdditions.mm b/platform/darwin/src/NSDictionary+MLNAdditions.mm similarity index 100% rename from platform/ios/platform/darwin/src/NSDictionary+MLNAdditions.mm rename to platform/darwin/src/NSDictionary+MLNAdditions.mm diff --git a/platform/ios/platform/darwin/src/NSException+MLNAdditions.h b/platform/darwin/src/NSException+MLNAdditions.h similarity index 100% rename from platform/ios/platform/darwin/src/NSException+MLNAdditions.h rename to platform/darwin/src/NSException+MLNAdditions.h diff --git a/platform/ios/platform/darwin/src/NSExpression+MLNAdditions.h b/platform/darwin/src/NSExpression+MLNAdditions.h similarity index 100% rename from platform/ios/platform/darwin/src/NSExpression+MLNAdditions.h rename to platform/darwin/src/NSExpression+MLNAdditions.h diff --git a/platform/ios/platform/darwin/src/NSExpression+MLNAdditions.mm b/platform/darwin/src/NSExpression+MLNAdditions.mm similarity index 100% rename from platform/ios/platform/darwin/src/NSExpression+MLNAdditions.mm rename to platform/darwin/src/NSExpression+MLNAdditions.mm diff --git a/platform/ios/platform/darwin/src/NSExpression+MLNPrivateAdditions.h b/platform/darwin/src/NSExpression+MLNPrivateAdditions.h similarity index 100% rename from platform/ios/platform/darwin/src/NSExpression+MLNPrivateAdditions.h rename to platform/darwin/src/NSExpression+MLNPrivateAdditions.h diff --git a/platform/ios/platform/darwin/src/NSPredicate+MLNAdditions.h b/platform/darwin/src/NSPredicate+MLNAdditions.h similarity index 100% rename from platform/ios/platform/darwin/src/NSPredicate+MLNAdditions.h rename to platform/darwin/src/NSPredicate+MLNAdditions.h diff --git a/platform/ios/platform/darwin/src/NSPredicate+MLNAdditions.mm b/platform/darwin/src/NSPredicate+MLNAdditions.mm similarity index 100% rename from platform/ios/platform/darwin/src/NSPredicate+MLNAdditions.mm rename to platform/darwin/src/NSPredicate+MLNAdditions.mm diff --git a/platform/ios/platform/darwin/src/NSPredicate+MLNPrivateAdditions.h b/platform/darwin/src/NSPredicate+MLNPrivateAdditions.h similarity index 100% rename from platform/ios/platform/darwin/src/NSPredicate+MLNPrivateAdditions.h rename to platform/darwin/src/NSPredicate+MLNPrivateAdditions.h diff --git a/platform/ios/platform/darwin/src/NSString+MLNAdditions.h b/platform/darwin/src/NSString+MLNAdditions.h similarity index 100% rename from platform/ios/platform/darwin/src/NSString+MLNAdditions.h rename to platform/darwin/src/NSString+MLNAdditions.h diff --git a/platform/ios/platform/darwin/src/NSString+MLNAdditions.m b/platform/darwin/src/NSString+MLNAdditions.m similarity index 100% rename from platform/ios/platform/darwin/src/NSString+MLNAdditions.m rename to platform/darwin/src/NSString+MLNAdditions.m diff --git a/platform/ios/platform/darwin/src/NSURL+MLNAdditions.h b/platform/darwin/src/NSURL+MLNAdditions.h similarity index 100% rename from platform/ios/platform/darwin/src/NSURL+MLNAdditions.h rename to platform/darwin/src/NSURL+MLNAdditions.h diff --git a/platform/ios/platform/darwin/src/NSURL+MLNAdditions.m b/platform/darwin/src/NSURL+MLNAdditions.m similarity index 100% rename from platform/ios/platform/darwin/src/NSURL+MLNAdditions.m rename to platform/darwin/src/NSURL+MLNAdditions.m diff --git a/platform/ios/platform/darwin/src/NSValue+MLNAdditions.h b/platform/darwin/src/NSValue+MLNAdditions.h similarity index 100% rename from platform/ios/platform/darwin/src/NSValue+MLNAdditions.h rename to platform/darwin/src/NSValue+MLNAdditions.h diff --git a/platform/ios/platform/darwin/src/NSValue+MLNAdditions.m b/platform/darwin/src/NSValue+MLNAdditions.m similarity index 100% rename from platform/ios/platform/darwin/src/NSValue+MLNAdditions.m rename to platform/darwin/src/NSValue+MLNAdditions.m diff --git a/platform/ios/platform/darwin/src/NSValue+MLNStyleAttributeAdditions.h b/platform/darwin/src/NSValue+MLNStyleAttributeAdditions.h similarity index 100% rename from platform/ios/platform/darwin/src/NSValue+MLNStyleAttributeAdditions.h rename to platform/darwin/src/NSValue+MLNStyleAttributeAdditions.h diff --git a/platform/ios/platform/darwin/src/NSValue+MLNStyleAttributeAdditions.mm b/platform/darwin/src/NSValue+MLNStyleAttributeAdditions.mm similarity index 100% rename from platform/ios/platform/darwin/src/NSValue+MLNStyleAttributeAdditions.mm rename to platform/darwin/src/NSValue+MLNStyleAttributeAdditions.mm diff --git a/platform/ios/platform/darwin/test/MLNAttributionInfoTests.m b/platform/darwin/test/MLNAttributionInfoTests.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNAttributionInfoTests.m rename to platform/darwin/test/MLNAttributionInfoTests.m diff --git a/platform/ios/platform/darwin/test/MLNClockDirectionFormatterTests.m b/platform/darwin/test/MLNClockDirectionFormatterTests.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNClockDirectionFormatterTests.m rename to platform/darwin/test/MLNClockDirectionFormatterTests.m diff --git a/platform/ios/platform/darwin/test/MLNCodingTests.mm b/platform/darwin/test/MLNCodingTests.mm similarity index 100% rename from platform/ios/platform/darwin/test/MLNCodingTests.mm rename to platform/darwin/test/MLNCodingTests.mm diff --git a/platform/ios/platform/darwin/test/MLNCompassDirectionFormatterTests.m b/platform/darwin/test/MLNCompassDirectionFormatterTests.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNCompassDirectionFormatterTests.m rename to platform/darwin/test/MLNCompassDirectionFormatterTests.m diff --git a/platform/ios/platform/darwin/test/MLNComputedShapeSourceTests.m b/platform/darwin/test/MLNComputedShapeSourceTests.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNComputedShapeSourceTests.m rename to platform/darwin/test/MLNComputedShapeSourceTests.m diff --git a/platform/ios/platform/darwin/test/MLNCoordinateFormatterTests.m b/platform/darwin/test/MLNCoordinateFormatterTests.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNCoordinateFormatterTests.m rename to platform/darwin/test/MLNCoordinateFormatterTests.m diff --git a/platform/ios/platform/darwin/test/MLNDistanceFormatterTests.m b/platform/darwin/test/MLNDistanceFormatterTests.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNDistanceFormatterTests.m rename to platform/darwin/test/MLNDistanceFormatterTests.m diff --git a/platform/ios/platform/darwin/test/MLNDocumentationExampleTests.swift b/platform/darwin/test/MLNDocumentationExampleTests.swift similarity index 100% rename from platform/ios/platform/darwin/test/MLNDocumentationExampleTests.swift rename to platform/darwin/test/MLNDocumentationExampleTests.swift diff --git a/platform/ios/platform/darwin/test/MLNDocumentationGuideTests.swift b/platform/darwin/test/MLNDocumentationGuideTests.swift similarity index 100% rename from platform/ios/platform/darwin/test/MLNDocumentationGuideTests.swift rename to platform/darwin/test/MLNDocumentationGuideTests.swift diff --git a/platform/ios/platform/darwin/test/MLNExpressionTests.mm b/platform/darwin/test/MLNExpressionTests.mm similarity index 100% rename from platform/ios/platform/darwin/test/MLNExpressionTests.mm rename to platform/darwin/test/MLNExpressionTests.mm diff --git a/platform/ios/platform/darwin/test/MLNFeatureTests.mm b/platform/darwin/test/MLNFeatureTests.mm similarity index 100% rename from platform/ios/platform/darwin/test/MLNFeatureTests.mm rename to platform/darwin/test/MLNFeatureTests.mm diff --git a/platform/ios/platform/darwin/test/MLNGeometryTests.mm b/platform/darwin/test/MLNGeometryTests.mm similarity index 100% rename from platform/ios/platform/darwin/test/MLNGeometryTests.mm rename to platform/darwin/test/MLNGeometryTests.mm diff --git a/platform/ios/platform/darwin/test/MLNHeatmapColorTests.mm b/platform/darwin/test/MLNHeatmapColorTests.mm similarity index 100% rename from platform/ios/platform/darwin/test/MLNHeatmapColorTests.mm rename to platform/darwin/test/MLNHeatmapColorTests.mm diff --git a/platform/ios/platform/darwin/test/MLNImageSourceTests.m b/platform/darwin/test/MLNImageSourceTests.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNImageSourceTests.m rename to platform/darwin/test/MLNImageSourceTests.m diff --git a/platform/ios/platform/darwin/test/MLNImageTests.mm b/platform/darwin/test/MLNImageTests.mm similarity index 100% rename from platform/ios/platform/darwin/test/MLNImageTests.mm rename to platform/darwin/test/MLNImageTests.mm diff --git a/platform/ios/platform/darwin/test/MLNLightTest.mm.ejs b/platform/darwin/test/MLNLightTest.mm.ejs similarity index 100% rename from platform/ios/platform/darwin/test/MLNLightTest.mm.ejs rename to platform/darwin/test/MLNLightTest.mm.ejs diff --git a/platform/ios/platform/darwin/test/MLNMapCameraTests.m b/platform/darwin/test/MLNMapCameraTests.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNMapCameraTests.m rename to platform/darwin/test/MLNMapCameraTests.m diff --git a/platform/ios/platform/darwin/test/MLNMapProjectionTests.m b/platform/darwin/test/MLNMapProjectionTests.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNMapProjectionTests.m rename to platform/darwin/test/MLNMapProjectionTests.m diff --git a/platform/ios/platform/darwin/test/MLNMapSnapshotterTests.m b/platform/darwin/test/MLNMapSnapshotterTests.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNMapSnapshotterTests.m rename to platform/darwin/test/MLNMapSnapshotterTests.m diff --git a/platform/ios/platform/darwin/test/MLNMapViewTests.m b/platform/darwin/test/MLNMapViewTests.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNMapViewTests.m rename to platform/darwin/test/MLNMapViewTests.m diff --git a/platform/ios/platform/darwin/test/MLNNSDateAdditionsTests.mm b/platform/darwin/test/MLNNSDateAdditionsTests.mm similarity index 100% rename from platform/ios/platform/darwin/test/MLNNSDateAdditionsTests.mm rename to platform/darwin/test/MLNNSDateAdditionsTests.mm diff --git a/platform/ios/platform/darwin/test/MLNNSStringAdditionsTests.m b/platform/darwin/test/MLNNSStringAdditionsTests.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNNSStringAdditionsTests.m rename to platform/darwin/test/MLNNSStringAdditionsTests.m diff --git a/platform/ios/platform/darwin/test/MLNOfflinePackTests.mm b/platform/darwin/test/MLNOfflinePackTests.mm similarity index 100% rename from platform/ios/platform/darwin/test/MLNOfflinePackTests.mm rename to platform/darwin/test/MLNOfflinePackTests.mm diff --git a/platform/ios/platform/darwin/test/MLNOfflineRegionTests.m b/platform/darwin/test/MLNOfflineRegionTests.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNOfflineRegionTests.m rename to platform/darwin/test/MLNOfflineRegionTests.m diff --git a/platform/ios/platform/darwin/test/MLNOfflineStorageTests.mm b/platform/darwin/test/MLNOfflineStorageTests.mm similarity index 100% rename from platform/ios/platform/darwin/test/MLNOfflineStorageTests.mm rename to platform/darwin/test/MLNOfflineStorageTests.mm diff --git a/platform/ios/platform/darwin/test/MLNPredicateTests.mm b/platform/darwin/test/MLNPredicateTests.mm similarity index 100% rename from platform/ios/platform/darwin/test/MLNPredicateTests.mm rename to platform/darwin/test/MLNPredicateTests.mm diff --git a/platform/ios/platform/darwin/test/MLNRendererConfigurationTests.m b/platform/darwin/test/MLNRendererConfigurationTests.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNRendererConfigurationTests.m rename to platform/darwin/test/MLNRendererConfigurationTests.m diff --git a/platform/ios/platform/darwin/test/MLNResourceTests.mm b/platform/darwin/test/MLNResourceTests.mm similarity index 100% rename from platform/ios/platform/darwin/test/MLNResourceTests.mm rename to platform/darwin/test/MLNResourceTests.mm diff --git a/platform/ios/platform/darwin/test/MLNSDKTestHelpers.swift b/platform/darwin/test/MLNSDKTestHelpers.swift similarity index 100% rename from platform/ios/platform/darwin/test/MLNSDKTestHelpers.swift rename to platform/darwin/test/MLNSDKTestHelpers.swift diff --git a/platform/ios/platform/darwin/test/MLNShapeSourceTests.mm b/platform/darwin/test/MLNShapeSourceTests.mm similarity index 100% rename from platform/ios/platform/darwin/test/MLNShapeSourceTests.mm rename to platform/darwin/test/MLNShapeSourceTests.mm diff --git a/platform/ios/platform/darwin/test/MLNSourceQueryTests.m b/platform/darwin/test/MLNSourceQueryTests.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNSourceQueryTests.m rename to platform/darwin/test/MLNSourceQueryTests.m diff --git a/platform/ios/platform/darwin/test/MLNStyleLayerTests.h b/platform/darwin/test/MLNStyleLayerTests.h similarity index 100% rename from platform/ios/platform/darwin/test/MLNStyleLayerTests.h rename to platform/darwin/test/MLNStyleLayerTests.h diff --git a/platform/ios/platform/darwin/test/MLNStyleLayerTests.m b/platform/darwin/test/MLNStyleLayerTests.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNStyleLayerTests.m rename to platform/darwin/test/MLNStyleLayerTests.m diff --git a/platform/ios/platform/darwin/test/MLNStyleLayerTests.mm.ejs b/platform/darwin/test/MLNStyleLayerTests.mm.ejs similarity index 100% rename from platform/ios/platform/darwin/test/MLNStyleLayerTests.mm.ejs rename to platform/darwin/test/MLNStyleLayerTests.mm.ejs diff --git a/platform/ios/platform/darwin/test/MLNStyleTests.mm b/platform/darwin/test/MLNStyleTests.mm similarity index 100% rename from platform/ios/platform/darwin/test/MLNStyleTests.mm rename to platform/darwin/test/MLNStyleTests.mm diff --git a/platform/ios/platform/darwin/test/MLNTestAssertionHandler.h b/platform/darwin/test/MLNTestAssertionHandler.h similarity index 100% rename from platform/ios/platform/darwin/test/MLNTestAssertionHandler.h rename to platform/darwin/test/MLNTestAssertionHandler.h diff --git a/platform/ios/platform/darwin/test/MLNTestAssertionHandler.m b/platform/darwin/test/MLNTestAssertionHandler.m similarity index 100% rename from platform/ios/platform/darwin/test/MLNTestAssertionHandler.m rename to platform/darwin/test/MLNTestAssertionHandler.m diff --git a/platform/ios/platform/darwin/test/MLNTestUtility.h b/platform/darwin/test/MLNTestUtility.h similarity index 100% rename from platform/ios/platform/darwin/test/MLNTestUtility.h rename to platform/darwin/test/MLNTestUtility.h diff --git a/platform/ios/platform/darwin/test/MLNTileSetTests.mm b/platform/darwin/test/MLNTileSetTests.mm similarity index 100% rename from platform/ios/platform/darwin/test/MLNTileSetTests.mm rename to platform/darwin/test/MLNTileSetTests.mm diff --git a/platform/ios/platform/darwin/test/Media.xcassets/Contents.json b/platform/darwin/test/Media.xcassets/Contents.json similarity index 100% rename from platform/ios/platform/darwin/test/Media.xcassets/Contents.json rename to platform/darwin/test/Media.xcassets/Contents.json diff --git a/platform/ios/platform/darwin/test/Media.xcassets/Fixtures/Contents.json b/platform/darwin/test/Media.xcassets/Fixtures/Contents.json similarity index 100% rename from platform/ios/platform/darwin/test/Media.xcassets/Fixtures/Contents.json rename to platform/darwin/test/Media.xcassets/Fixtures/Contents.json diff --git a/platform/ios/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/Contents.json b/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/Contents.json similarity index 100% rename from platform/ios/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/Contents.json rename to platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/Contents.json diff --git a/platform/ios/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/PingFang.imageset/Contents.json b/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/PingFang.imageset/Contents.json similarity index 100% rename from platform/ios/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/PingFang.imageset/Contents.json rename to platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/PingFang.imageset/Contents.json diff --git a/platform/ios/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/PingFang.imageset/actualImage.png b/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/PingFang.imageset/actualImage.png similarity index 100% rename from platform/ios/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/PingFang.imageset/actualImage.png rename to platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/PingFang.imageset/actualImage.png diff --git a/platform/ios/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/PingFang.imageset/expected.png b/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/PingFang.imageset/expected.png similarity index 100% rename from platform/ios/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/PingFang.imageset/expected.png rename to platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/PingFang.imageset/expected.png diff --git a/platform/ios/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/background.imageset/Contents.json b/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/background.imageset/Contents.json similarity index 100% rename from platform/ios/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/background.imageset/Contents.json rename to platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/background.imageset/Contents.json diff --git a/platform/ios/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/background.imageset/background.png b/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/background.imageset/background.png similarity index 100% rename from platform/ios/platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/background.imageset/background.png rename to platform/darwin/test/Media.xcassets/Fixtures/MLNMapSnapshotterTests/background.imageset/background.png diff --git a/platform/ios/platform/darwin/test/Media.xcassets/RadarImage.imageset/Contents.json b/platform/darwin/test/Media.xcassets/RadarImage.imageset/Contents.json similarity index 100% rename from platform/ios/platform/darwin/test/Media.xcassets/RadarImage.imageset/Contents.json rename to platform/darwin/test/Media.xcassets/RadarImage.imageset/Contents.json diff --git a/platform/ios/platform/darwin/test/Media.xcassets/RadarImage.imageset/radar.png b/platform/darwin/test/Media.xcassets/RadarImage.imageset/radar.png similarity index 100% rename from platform/ios/platform/darwin/test/Media.xcassets/RadarImage.imageset/radar.png rename to platform/darwin/test/Media.xcassets/RadarImage.imageset/radar.png diff --git a/platform/ios/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/Contents.json b/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/Contents.json similarity index 100% rename from platform/ios/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/Contents.json rename to platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/Contents.json diff --git a/platform/ios/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png b/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png similarity index 100% rename from platform/ios/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png rename to platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png diff --git a/platform/ios/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png b/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png similarity index 100% rename from platform/ios/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png rename to platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png diff --git a/platform/ios/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png b/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png similarity index 100% rename from platform/ios/platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png rename to platform/darwin/test/Media.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png diff --git a/platform/ios/platform/darwin/test/amsterdam.geojson b/platform/darwin/test/amsterdam.geojson similarity index 100% rename from platform/ios/platform/darwin/test/amsterdam.geojson rename to platform/darwin/test/amsterdam.geojson diff --git a/platform/ios/platform/darwin/test/one-liner.json b/platform/darwin/test/one-liner.json similarity index 100% rename from platform/ios/platform/darwin/test/one-liner.json rename to platform/darwin/test/one-liner.json diff --git a/platform/ios/platform/darwin/test/test-Bridging-Header.h b/platform/darwin/test/test-Bridging-Header.h similarity index 100% rename from platform/ios/platform/darwin/test/test-Bridging-Header.h rename to platform/darwin/test/test-Bridging-Header.h diff --git a/platform/default/BUILD.bazel b/platform/default/BUILD.bazel index 4826e6541..4e237290a 100644 --- a/platform/default/BUILD.bazel +++ b/platform/default/BUILD.bazel @@ -93,6 +93,7 @@ cc_library( "include", ], visibility = [ + "//platform:__pkg__", "//platform/darwin:__pkg__", "//platform/ios:__pkg__", "//platform/linux:__pkg__", diff --git a/platform/default/src/mbgl/render-test/main.cpp b/platform/default/src/mbgl/render-test/main.cpp index aed0e01d3..6ff2d04d4 100644 --- a/platform/default/src/mbgl/render-test/main.cpp +++ b/platform/default/src/mbgl/render-test/main.cpp @@ -1,5 +1,22 @@ #include -int main(int argc, char *argv[]) { - return mbgl::runRenderTests(argc, argv, []() {}); -} +#ifdef __APPLE +#if defined(TARGET_IPHONE_SIMULATOR) +#define IS_IOS +#elif defined(TARGET_OS_IPHONE) +#define IS_IOS +#endif +#endif + +int main(int argc, char* argv[]) { +#ifdef IS_IOS + try { +#endif + return mbgl::runRenderTests(argc, argv, []() {}); +#ifdef IS_IOS + } catch (std::exception const& e) { + std::cerr << "Caught an exception while running tests\n" << e.what() << '\n'; + return 1; + } +#endif +} \ No newline at end of file diff --git a/platform/ios/.cmake-format b/platform/ios/.cmake-format deleted file mode 100644 index abd1e46cb..000000000 --- a/platform/ios/.cmake-format +++ /dev/null @@ -1,91 +0,0 @@ - -# -------------------------- -# General Formatting Options -# -------------------------- -# How wide to allow formatted cmake files -line_width = 140 - -# How many spaces to tab for indent -tab_size = 4 - -# If arglists are longer than this, break them always -max_subargs_per_line = 3 - -# If true, separate flow control names from their parentheses with a space -separate_ctrl_name_with_space = False - -# If true, separate function names from parentheses with a space -separate_fn_name_with_space = False - -# If a statement is wrapped to more than one line, than dangle the closing -# parenthesis on it's own line -dangle_parens = True - -# If the statement spelling length (including space and parenthesis is larger -# than the tab width by more than this amoung, then force reject un-nested -# layouts. -max_prefix_chars = 2 - -# If a candidate layout is wrapped horizontally but it exceeds this many lines, -# then reject the layout. -max_lines_hwrap = 8 - -# What style line endings to use in the output. -line_ending = u'unix' - -# Format command names consistently as 'lower' or 'upper' case -command_case = u'canonical' - -# Format keywords consistently as 'lower' or 'upper' case -keyword_case = u'unchanged' - -# Specify structure for custom cmake functions -additional_commands = { - "add_node_module": { - "kwargs": { - "INSTALL_PATH": "*", - "NAN_VERSION": "*", - "EXCLUDE_NODE_ABIS": "*" - } - }, - "target_compile_definitions": { - "kwargs": { - "PRIVATE": "*", - "PUBLIC": "*" - } - }, - "target_sources": { - "kwargs": { - "INTERFACE": "*", - "PRIVATE": "*", - "PUBLIC": "*" - } - } -} - -# A list of command names which should always be wrapped -always_wrap = [ - "add_executable", - "add_library", - "set_source_files_properties", - "target_compile_definitions", - "target_include_directories", - "target_link_libraries", - "target_sources" -] - -# Specify the order of wrapping algorithms during successive reflow attempts -algorithm_order = [0, 1, 2, 3, 4] - -# If true, the argument lists which are known to be sortable will be sorted -# lexicographicall -enable_sort = True - -# If true, the parsers may infer whether or not an argument list is sortable -# (without annotation). -autosort = True - -# If a comment line starts with at least this many consecutive hash characters, -# then don't lstrip() them off. This allows for lazy hash rulers where the first -# hash char is not separated by space -hashruler_min_length = 10 diff --git a/platform/ios/BUILD.bazel b/platform/ios/BUILD.bazel index ef926f00d..4b3923df4 100644 --- a/platform/ios/BUILD.bazel +++ b/platform/ios/BUILD.bazel @@ -1,95 +1,61 @@ -load("@build_bazel_rules_apple//apple:apple.bzl", "apple_static_xcframework", "apple_xcframework", "local_provisioning_profile") +load("@build_bazel_rules_apple//apple:apple.bzl", "apple_static_xcframework", "apple_xcframework") load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application", "ios_framework") load("@build_bazel_rules_apple//apple:resources.bzl", "apple_resource_bundle") -load("//bazel:flags.bzl", "CPP_FLAGS", "MAPLIBRE_FLAGS", "WARNING_FLAGS") load( "@rules_xcodeproj//xcodeproj:defs.bzl", "top_level_target", - "xcode_provisioning_profile", "xcodeproj", ) -load("bazel/macros.bzl", "info_plist") -load("bazel/config.bzl", "APPLE_MOBILE_PROVISIONING_PROFILE_NAME", "APPLE_MOBILE_PROVISIONING_PROFILE_TEAM_ID", "BUNDLE_ID_PREFIX") +load("//platform/ios/bazel:macros.bzl", "info_plist") +load("//platform/ios/bazel:config.bzl", "BUNDLE_ID_PREFIX") +load( + "//platform/ios/bazel:files.bzl", + "MLN_IOS_PRIVATE_HEADERS", + "MLN_IOS_PUBLIC_HEADERS", + "MLN_IOS_PUBLIC_OBJCPP_SOURCE", + "MLN_IOS_PUBLIC_OBJC_SOURCE", + "MLN_IOS_SDK_HEADERS", + "MLN_PUBLIC_IOS_APP_SOPURCE", +) +load("//platform/ios/bazel:provisioning.bzl", "configure_device_profiles") -# This list of public headers is from what Mapbox vendors with their dynamic framework -# If we forget one the build will fail, and if we add too many there will be a warning -# (which also causes a build failure) so we don't need to worry too much about getting -# this wrong -# A combination of Mapbox.h and all its headers' imports as recursively -_PUBLIC_HEADERS = [ - "platform/darwin/src/MLNAnnotation.h", - "platform/darwin/src/MLNAttributedExpression.h", - "platform/darwin/src/MLNAttributionInfo.h", - "platform/darwin/src/MLNBackgroundStyleLayer.h", - "platform/darwin/src/MLNCircleStyleLayer.h", - "platform/darwin/src/MLNClockDirectionFormatter.h", - "platform/darwin/src/MLNCluster.h", - "platform/darwin/src/MLNCompassDirectionFormatter.h", - "platform/darwin/src/MLNComputedShapeSource.h", - "platform/darwin/src/MLNCoordinateFormatter.h", - "platform/darwin/src/MLNDefaultStyle.h", - "platform/darwin/src/MLNDistanceFormatter.h", - "platform/darwin/src/MLNFeature.h", - "platform/darwin/src/MLNFillExtrusionStyleLayer.h", - "platform/darwin/src/MLNFillStyleLayer.h", - "platform/darwin/src/MLNForegroundStyleLayer.h", - "platform/darwin/src/MLNFoundation.h", - "platform/darwin/src/MLNGeometry.h", - "platform/darwin/src/MLNHeatmapStyleLayer.h", - "platform/darwin/src/MLNHillshadeStyleLayer.h", - "platform/darwin/src/MLNImageSource.h", - "platform/darwin/src/MLNLight.h", - "platform/darwin/src/MLNLineStyleLayer.h", - "platform/darwin/src/MLNLocationManager.h", - "platform/darwin/src/MLNLoggingConfiguration.h", - "platform/darwin/src/MLNMapCamera.h", - "platform/darwin/src/MLNMapSnapshotter.h", - "platform/darwin/src/MLNMultiPoint.h", - "platform/darwin/src/MLNNetworkConfiguration.h", - "platform/darwin/src/MLNOfflinePack.h", - "platform/darwin/src/MLNOfflineRegion.h", - "platform/darwin/src/MLNOfflineStorage.h", - "platform/darwin/src/MLNOpenGLStyleLayer.h", - "platform/darwin/src/MLNOverlay.h", - "platform/darwin/src/MLNPointAnnotation.h", - "platform/darwin/src/MLNPointCollection.h", - "platform/darwin/src/MLNPolygon.h", - "platform/darwin/src/MLNPolyline.h", - "platform/darwin/src/MLNRasterDEMSource.h", - "platform/darwin/src/MLNRasterStyleLayer.h", - "platform/darwin/src/MLNRasterTileSource.h", - "platform/darwin/src/MLNSettings.h", - "platform/darwin/src/MLNShape.h", - "platform/darwin/src/MLNShapeCollection.h", - "platform/darwin/src/MLNShapeOfflineRegion.h", - "platform/darwin/src/MLNShapeSource.h", - "platform/darwin/src/MLNSource.h", - "platform/darwin/src/MLNStyle.h", - "platform/darwin/src/MLNStyleLayer.h", - "platform/darwin/src/MLNStyleValue.h", - "platform/darwin/src/MLNSymbolStyleLayer.h", - "platform/darwin/src/MLNTilePyramidOfflineRegion.h", - "platform/darwin/src/MLNTileServerOptions.h", - "platform/darwin/src/MLNTileSource.h", - "platform/darwin/src/MLNTypes.h", - "platform/darwin/src/MLNVectorStyleLayer.h", - "platform/darwin/src/MLNVectorTileSource.h", - "platform/darwin/src/NSExpression+MLNAdditions.h", - "platform/darwin/src/NSPredicate+MLNAdditions.h", - "platform/darwin/src/NSValue+MLNAdditions.h", - "platform/ios/src/MLNAnnotationImage.h", - "platform/ios/src/MLNAnnotationView.h", - "platform/ios/src/MLNCalloutView.h", - "platform/ios/src/MLNCameraChangeReason.h", - "platform/ios/src/MLNCompassButton.h", - "platform/ios/src/MLNMapProjection.h", - "platform/ios/src/MLNMapView+IBAdditions.h", - "platform/ios/src/MLNMapView.h", - "platform/ios/src/MLNMapViewDelegate.h", - "platform/ios/src/MLNUserLocation.h", - "platform/ios/src/MLNUserLocationAnnotationView.h", - "platform/ios/src/MLNUserLocationAnnotationViewStyle.h", -] +configure_device_profiles() + +filegroup( + name = "ios_sdk_hdrs", + srcs = MLN_IOS_SDK_HEADERS, + visibility = ["//visibility:public"], +) + +filegroup( + name = "ios_public_hdrs", + srcs = MLN_IOS_PUBLIC_HEADERS, + visibility = ["//visibility:public"], +) + +filegroup( + name = "ios_private_hdrs", + srcs = MLN_IOS_PRIVATE_HEADERS, + visibility = ["//visibility:public"], +) + +filegroup( + name = "ios_objcpp_srcs", + srcs = MLN_IOS_PUBLIC_OBJCPP_SOURCE, + visibility = ["//visibility:public"], +) + +filegroup( + name = "ios_objc_srcs", + srcs = MLN_IOS_PUBLIC_OBJC_SOURCE, + visibility = ["//visibility:public"], +) + +filegroup( + name = "ios_app_srcs", + srcs = MLN_PUBLIC_IOS_APP_SOPURCE, + visibility = ["//visibility:public"], +) apple_static_xcframework( name = "Mapbox.static", @@ -102,22 +68,27 @@ apple_static_xcframework( "device": ["arm64"], }, minimum_os_versions = {"ios": "12.0"}, - public_hdrs = _PUBLIC_HEADERS, - umbrella_header = "platform/ios/src/Mapbox.h", + public_hdrs = [ + ":ios_public_hdrs", + ":ios_sdk_hdrs", + "//platform/darwin:darwin_objc_hdrs", + "//platform/darwin:darwin_objcpp_hdrs", + ], + umbrella_header = "src/Mapbox.h", visibility = ["//visibility:public"], - deps = ["sdk"], + deps = ["//platform:ios-sdk"], ) info_plist( name = "info_plist", out = "Info.plist", - base_info_plist = "platform/ios/framework/Info.plist", + base_info_plist = "framework/Info.plist", ) info_plist( name = "info_static_plist", out = "Info-static.plist", - base_info_plist = "platform/ios/framework/Info-static.plist", + base_info_plist = "framework/Info-static.plist", ) apple_xcframework( @@ -125,8 +96,8 @@ apple_xcframework( bundle_id = "com.maplibre.mapbox", bundle_name = "Mapbox", data = glob([ - "platform/ios/resources/*.lproj/**", - "platform/ios/resources/*.xcassets/**", + "resources/*.lproj/**", + "resources/*.xcassets/**", ]), infoplists = ["info_plist"], ios = { @@ -137,10 +108,15 @@ apple_xcframework( "device": ["arm64"], }, minimum_os_versions = {"ios": "12.0"}, - public_hdrs = _PUBLIC_HEADERS, - umbrella_header = "platform/ios/src/Mapbox.h", + public_hdrs = [ + ":ios_public_hdrs", + ":ios_sdk_hdrs", + "//platform/darwin:darwin_objc_hdrs", + "//platform/darwin:darwin_objcpp_hdrs", + ], + umbrella_header = "src/Mapbox.h", visibility = ["//visibility:public"], - deps = ["sdk-dynamic"], + deps = ["//platform:ios-sdk-dynamic"], ) ios_framework( @@ -150,51 +126,7 @@ ios_framework( infoplists = ["info_plist"], linkopts = [""], minimum_os_version = "12.0", - deps = ["sdk"], -) - -# sdk for the static target which includes the resources. -objc_library( - name = "sdk", - hdrs = _PUBLIC_HEADERS, - data = ["resources"], - module_name = "MapLibre", - sdk_dylibs = [ - "libz", - "libsqlite3", - "libc++", - ], - sdk_frameworks = [ - "MobileCoreServices", - "Security", - "WebKit", - ], - visibility = ["//visibility:public"], - deps = [ - "objc-sdk", - "objcpp-sdk", - ], -) - -# sdk for the dynamic target. Lacking the resources bundle since for dynamic -# they are in the main package. -objc_library( - name = "sdk-dynamic", - sdk_dylibs = [ - "libz", - "libsqlite3", - "libc++", - ], - sdk_frameworks = [ - "MobileCoreServices", - "Security", - "WebKit", - ], - visibility = ["//visibility:public"], - deps = [ - "objc-sdk", - "objcpp-sdk", - ], + deps = ["//platform:ios-sdk"], ) apple_resource_bundle( @@ -203,255 +135,27 @@ apple_resource_bundle( bundle_name = "Mapbox", infoplists = ["info_static_plist"], resources = glob([ - "platform/ios/resources/*.lproj/**", - "platform/ios/resources/*.xcassets/**", + "resources/*.lproj/**", + "resources/*.xcassets/**", ]), -) - -# Objcpp files for the iOS source -objc_library( - name = "objcpp-sdk", - srcs = [ - "platform/darwin/src/MLNAttributionInfo.mm", - "platform/darwin/src/MLNBackgroundStyleLayer.mm", - "platform/darwin/src/MLNCircleStyleLayer.mm", - "platform/darwin/src/MLNComputedShapeSource.mm", - "platform/darwin/src/MLNDefaultStyle.mm", - "platform/darwin/src/MLNFeature.mm", - "platform/darwin/src/MLNFillExtrusionStyleLayer.mm", - "platform/darwin/src/MLNFillStyleLayer.mm", - "platform/darwin/src/MLNForegroundStyleLayer.mm", - "platform/darwin/src/MLNFoundation.mm", - "platform/darwin/src/MLNGeometry.mm", - "platform/darwin/src/MLNHeatmapStyleLayer.mm", - "platform/darwin/src/MLNHillshadeStyleLayer.mm", - "platform/darwin/src/MLNImageSource.mm", - "platform/darwin/src/MLNLight.mm", - "platform/darwin/src/MLNLineStyleLayer.mm", - "platform/darwin/src/MLNLoggingConfiguration.mm", - "platform/darwin/src/MLNMapCamera.mm", - "platform/darwin/src/MLNMapSnapshotter.mm", - "platform/darwin/src/MLNMultiPoint.mm", - "platform/darwin/src/MLNNetworkConfiguration.mm", - "platform/darwin/src/MLNOfflinePack.mm", - "platform/darwin/src/MLNOfflineStorage.mm", - "platform/darwin/src/MLNOpenGLStyleLayer.mm", - "platform/darwin/src/MLNPointAnnotation.mm", - "platform/darwin/src/MLNPointCollection.mm", - "platform/darwin/src/MLNPolygon.mm", - "platform/darwin/src/MLNPolyline.mm", - "platform/darwin/src/MLNRasterDEMSource.mm", - "platform/darwin/src/MLNRasterStyleLayer.mm", - "platform/darwin/src/MLNRasterTileSource.mm", - "platform/darwin/src/MLNSettings.mm", - "platform/darwin/src/MLNShape.mm", - "platform/darwin/src/MLNShapeCollection.mm", - "platform/darwin/src/MLNShapeOfflineRegion.mm", - "platform/darwin/src/MLNShapeSource.mm", - "platform/darwin/src/MLNSource.mm", - "platform/darwin/src/MLNStyle.mm", - "platform/darwin/src/MLNStyleLayer.mm", - "platform/darwin/src/MLNStyleLayerManager.mm", - "platform/darwin/src/MLNStyleValue.mm", - "platform/darwin/src/MLNSymbolStyleLayer.mm", - "platform/darwin/src/MLNTilePyramidOfflineRegion.mm", - "platform/darwin/src/MLNTileServerOptions.mm", - "platform/darwin/src/MLNTileSource.mm", - "platform/darwin/src/MLNVectorStyleLayer.mm", - "platform/darwin/src/MLNVectorTileSource.mm", - "platform/darwin/src/NSArray+MLNAdditions.mm", - "platform/darwin/src/NSBundle+MLNAdditions.mm", - "platform/darwin/src/NSCoder+MLNAdditions.mm", - "platform/darwin/src/NSComparisonPredicate+MLNAdditions.mm", - "platform/darwin/src/NSCompoundPredicate+MLNAdditions.mm", - "platform/darwin/src/NSDate+MLNAdditions.mm", - "platform/darwin/src/NSDictionary+MLNAdditions.mm", - "platform/darwin/src/NSExpression+MLNAdditions.mm", - "platform/darwin/src/NSPredicate+MLNAdditions.mm", - "platform/darwin/src/NSValue+MLNStyleAttributeAdditions.mm", - "platform/ios/src/MLNAnnotationView.mm", - "platform/ios/src/MLNCompassButton.mm", - "platform/ios/src/MLNFaux3DUserLocationAnnotationView.mm", - "platform/ios/src/MLNMapAccessibilityElement.mm", - "platform/ios/src/MLNMapProjection.mm", - "platform/ios/src/MLNMapView.mm", - "platform/ios/src/MLNMapView+Impl.mm", - "platform/ios/src/MLNMapView+OpenGL.mm", - "platform/ios/src/MLNScaleBar.mm", - "platform/ios/src/UIColor+MLNAdditions.mm", - "platform/ios/src/UIImage+MLNAdditions.mm", - ], - copts = CPP_FLAGS + MAPLIBRE_FLAGS + [ - "-fcxx-modules", - "-fmodules", - "-Wno-c99-extensions", - "-Wno-gnu-zero-variadic-macro-arguments", - "-Wno-gnu-conditional-omitted-operand", - "-Wno-gnu-statement-expression", - ], - includes = [ - "platform/darwin/include", - ], - sdk_frameworks = [ - "CoreImage", - "CoreLocation", - "GLKit", - "OpenGLES", - "QuartzCore", - ], - deps = [ - "objc-headers", - "//:mbgl-core", - "//platform/darwin:darwin-objcpp", - "//platform/default:mbgl-default", - "//platform/ios/platform/ios/vendor:SMCalloutView", - ], -) - -# platform/ios/sdk-files.json -# Objc files for the iOS source -objc_library( - name = "objc-sdk", - srcs = [ - "platform/darwin/src/MLNAttributedExpression.m", - "platform/darwin/src/MLNClockDirectionFormatter.m", - "platform/darwin/src/MLNCompassDirectionFormatter.m", - "platform/darwin/src/MLNCoordinateFormatter.m", - "platform/darwin/src/MLNDistanceFormatter.m", - "platform/darwin/src/MLNLocationManager.m", - "platform/darwin/src/MLNReachability.m", - "platform/darwin/src/MLNRendererConfiguration.m", - "platform/darwin/src/MLNTypes.m", - "platform/darwin/src/NSString+MLNAdditions.m", - "platform/darwin/src/NSURL+MLNAdditions.m", - "platform/darwin/src/NSValue+MLNAdditions.m", - "platform/ios/src/MLNAnnotationContainerView.m", - "platform/ios/src/MLNAnnotationImage.m", - "platform/ios/src/MLNCompactCalloutView.m", - "platform/ios/src/MLNUserLocation.m", - "platform/ios/src/MLNUserLocationAnnotationView.m", - "platform/ios/src/MLNUserLocationAnnotationViewStyle.m", - "platform/ios/src/MLNUserLocationHeadingArrowLayer.m", - "platform/ios/src/MLNUserLocationHeadingBeamLayer.m", - "platform/ios/src/NSOrthography+MLNAdditions.m", - "platform/ios/src/UIDevice+MLNAdditions.m", - "platform/ios/src/UIView+MLNAdditions.m", - "platform/ios/src/UIViewController+MLNAdditions.m", - ], - hdrs = [ - "platform/darwin/include/mbgl/util/image+MLNAdditions.hpp", - ], - copts = WARNING_FLAGS + MAPLIBRE_FLAGS + [ - "-fmodules", - "-Wno-gnu-zero-variadic-macro-arguments", - "-Wno-variadic-macros", - "-Wno-gnu-conditional-omitted-operand", - ], - includes = [ - "platform/darwin/include", - ], - deps = [ - "objc-headers", - "//:mbgl-core", - "//platform/darwin:darwin-objc", - "//platform/default:mbgl-default", - "//platform/ios/platform/ios/vendor:SMCalloutView", - ], -) - -# Common headers between objc and objcpp libraries. -objc_library( - name = "objc-headers", - srcs = glob([ - "platform/darwin/src/*.h", - "platform/ios/src/*.h", - ]), - includes = [ - "platform/darwin/src", - "platform/ios/src", - ], - sdk_frameworks = [ - "CoreGraphics", - "CoreLocation", - "QuartzCore", - ], - deps = [ - "//platform/darwin:darwin-objc", - "//platform/darwin:darwin-objcpp", - ], -) - -objc_library( - name = "sdk-headers", - hdrs = ["platform/ios/src/Mapbox.h"] + _PUBLIC_HEADERS, -) - -objc_library( - name = "iosapp", - srcs = [ - "platform/darwin/app/LimeGreenStyleLayer.h", - "platform/darwin/app/LimeGreenStyleLayer.m", - "platform/ios/app/MBXAnnotationView.m", - "platform/ios/app/MBXAppDelegate.m", - "platform/ios/app/MBXCustomCalloutView.h", - "platform/ios/app/MBXCustomCalloutView.m", - "platform/ios/app/MBXCustomLocationViewController.m", - "platform/ios/app/MBXEmbeddedMapViewController.m", - "platform/ios/app/MBXFrameTimeGraphView.m", - "platform/ios/app/MBXOfflinePacksTableViewController.m", - "platform/ios/app/MBXOrnamentsViewController.m", - "platform/ios/app/MBXSnapshotsViewController.m", - "platform/ios/app/MBXState.m", - "platform/ios/app/MBXStateManager.m", - "platform/ios/app/MBXUserLocationAnnotationView.m", - "platform/ios/app/MBXViewController.m", - "platform/ios/app/main.m", - ], - hdrs = [ - "platform/ios/app/MBXAnnotationView.h", - "platform/ios/app/MBXAppDelegate.h", - "platform/ios/app/MBXCustomLocationViewController.h", - "platform/ios/app/MBXEmbeddedMapViewController.h", - "platform/ios/app/MBXFrameTimeGraphView.h", - "platform/ios/app/MBXOfflinePacksTableViewController.h", - "platform/ios/app/MBXOrnamentsViewController.h", - "platform/ios/app/MBXSnapshotsViewController.h", - "platform/ios/app/MBXState.h", - "platform/ios/app/MBXStateManager.h", - "platform/ios/app/MBXUserLocationAnnotationView.h", - "platform/ios/app/MBXViewController.h", - "platform/ios/app/MLNMapView_Experimental.h", - ], - data = glob([ - "platform/ios/app/Assets.xcassets/**", - ]), - includes = [ - "platform/darwin/app", - "platform/darwin/src", - "platform/ios/src", - ], - sdk_frameworks = [ - "GLKit", # needed for LimeGreenStyleLayer - ], - deps = [ - "sdk-headers", - ], + visibility = ["//visibility:public"], ) _IOS_APPLICATION_RESOURCES = [ - "platform/ios/app/numeric_filter_style.json", - "platform/ios/app/missing_icon.json", - "platform/ios/app/points.geojson", - "platform/ios/app/polyline.geojson", - "platform/ios/app/Settings.bundle", - "platform/ios/app/Main.storyboard", - "platform/ios/app/threestates.geojson", - "platform/ios/app/LaunchScreen.storyboard", - "platform/ios/app/simple_route.json", - "platform/ios/app/fill_filter_style.json", - "//platform/ios/platform/darwin/test:amsterdam.geojson", + "app/numeric_filter_style.json", + "app/missing_icon.json", + "app/points.geojson", + "app/polyline.geojson", + "app/Settings.bundle", + "app/Main.storyboard", + "app/threestates.geojson", + "app/LaunchScreen.storyboard", + "app/simple_route.json", + "app/fill_filter_style.json", + "//platform/darwin:test/amsterdam.geojson", ] + glob([ - "platform/ios/app/*.lproj/**", + "app/*.lproj/**", + "app/Assets.xcassets/**", ]) ios_application( @@ -461,20 +165,19 @@ ios_application( "iphone", "ipad", ], - infoplists = ["platform/ios/app/Info.plist"], + infoplists = ["app/Info.plist"], minimum_os_version = "12.0", provisioning_profile = "xcode_profile", resources = _IOS_APPLICATION_RESOURCES, visibility = ["//visibility:public"], deps = [ - "iosapp", - "sdk", + "//platform:iosapp", ], ) ios_application( name = "AppDynamicLib", - bundle_id = "com.maplibre.app", + bundle_id = "org.maplibre.app", families = [ "iphone", "ipad", @@ -482,12 +185,13 @@ ios_application( frameworks = [ "MapLibre.link", ], - infoplists = ["platform/ios/app/Info.plist"], + infoplists = ["app/Info.plist"], minimum_os_version = "12.0", + provisioning_profile = ":xcode_profile", resources = _IOS_APPLICATION_RESOURCES, visibility = ["//visibility:public"], deps = [ - "iosapp", + "//platform:iosapp", ], ) @@ -506,22 +210,11 @@ genrule( """, ) -local_provisioning_profile( - name = "provisioning_profile", - profile_name = APPLE_MOBILE_PROVISIONING_PROFILE_NAME, - team_id = APPLE_MOBILE_PROVISIONING_PROFILE_TEAM_ID, -) - -xcode_provisioning_profile( - name = "xcode_profile", - managed_by_xcode = True, - provisioning_profile = ":provisioning_profile", - visibility = ["//visibility:public"], -) - xcodeproj( name = "xcodeproj", + bazel_env = {"PATH": "/bin:/usr/bin:/usr/local/bin:/opt/homebrew/bin"}, build_mode = "xcode", + default_xcode_configuration = "Debug", minimum_xcode_version = "14", project_name = "MapLibre", tags = ["manual"], @@ -540,7 +233,47 @@ xcodeproj( "device", ], ), - "//platform/ios/platform/ios/test:ios_test", - "//platform/ios/platform/ios/iosapp-UITests:uitest", + top_level_target( + "//platform/ios/iosapp-UITests:uitest", + target_environments = [ + "simulator", + "device", + ], + ), + top_level_target( + "//platform/ios/test:ios_test", + target_environments = [ + "simulator", + "device", + ], + ), + ], + xcode_configurations = { + "Debug": {"//command_line_option:compilation_mode": "dbg"}, + "Release": {"//command_line_option:compilation_mode": "opt"}, + }, +) + +sh_binary( + name = "lint-plists", + srcs = ["//platform/ios:scripts/lint-plists.sh"], + data = [ + "Integration_Test_Harness/Info.plist", + "Integration_Tests/Info.plist", + "app/Info.plist", + "bench_UITests/Info.plist", + "benchmark/Info.plist", + "framework/Info.plist", + "framework/Info-static.plist", + "//platform/ios/iosapp-UITests:Info.plist", + "//platform/ios/test:Info.plist", ], ) + +exports_files( + MLN_IOS_PUBLIC_HEADERS + + MLN_IOS_PRIVATE_HEADERS + + MLN_IOS_PUBLIC_OBJCPP_SOURCE + + MLN_IOS_PUBLIC_OBJC_SOURCE + + MLN_PUBLIC_IOS_APP_SOPURCE, +) diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md index 2466f8b3b..54d283bfd 100644 --- a/platform/ios/CHANGELOG.md +++ b/platform/ios/CHANGELOG.md @@ -1,8 +1,1487 @@ -# Changelog +# Changelog for MapLibre Native for iOS -Each MapLibre Native SDK has a separate changelog that highlights changes relevant to their respective platforms: +MapLibre welcomes participation and contributions from everyone. Please read [`Contributing Guide`](https://github.com/maplibre/maplibre-native/blob/master/CONTRIBUTING.md) to get started. -* [MapLibre Native for Android](../../platform/android/CHANGELOG.md) -* [MapLibre Native for iOS](platform/ios/CHANGELOG.md) -* [MapLibre Native for macOS](platform/macos/CHANGELOG.md) -* [MapLibre Native for Node](../../platform/node/CHANGELOG.md) +## main + +* 💥 Breaking: Changed the prefix of files, classes, methods, variables and everything from `MGL` to `MLN`. ([#919](https://github.com/maplibre/maplibre-native/pull/919)). + + > To migrate: + > Change all your `MGL` prefixes to `MLN`. If you are using `NSKeyedArchiver` or similar mechanishm to save the state, the app may crash after this change when trying to unarchive the state using old names of the classes. You need to clean the saved state of the app and save it using new classes. + +## 5.13.0 - January 05, 2023 + +* Fix missing attribution [#236](https://github.com/maplibre/maplibre-native/pull/236) +* Fix logging format strings [#266](https://github.com/maplibre/maplibre-native/pull/266) +* Implement map projection functionality [#254](https://github.com/maplibre/maplibre-native/pull/254) +* Fix warnings, mainly casting to smaller types [#270](https://github.com/maplibre/maplibre-native/pull/270) +* Remove an unused static library (savings of 97 KB from iOS binary) +* Add ClientOptions to be able to pass around client name and version [#365](https://github.com/maplibre/maplibre-native/pull/365) +* Remove account from xcconfig [#382](https://github.com/maplibre/maplibre-native/pull/382) +* Remove observation of key-path [#380](https://github.com/maplibre/maplibre-native/pull/380) +* Fix for "NSExpression function is forbidden" [#411](https://github.com/maplibre/maplibre-native/pull/411) +* Xcode 14 compatibility [#494](https://github.com/maplibre/maplibre-native/pull/494) [#599](https://github.com/maplibre/maplibre-native/pull/599) + +## 5.12.2 - December 02, 2021 + +### Improvements + +* Exposes the windowBit value from zlib in the compress/decompress helper utils [#147](https://github.com/maplibre/maplibre-native/pull/147) +* Fix camera paddings reset on map view gestures performing [#188](https://github.com/maplibre/maplibre-native/pull/188) + +## 5.12.1 - September 06, 2021 + +### Bug Fixes + +* ScaleBar enhancements [#120](https://github.com/maplibre/maplibre-native/pull/120), [#121](https://github.com/maplibre/maplibre-native/pull/121) +* Invalid tile url template for MapLibre style [#107](https://github.com/maplibre/maplibre-native/pull/107) +* Address crash when localFontFamilyName is nil [#109](https://github.com/maplibre/maplibre-native/pull/109) +* Fix for annotations stuttering and drifting when panning [#113](https://github.com/maplibre/maplibre-native/pull/113) +* Adjust local glyphs [#122](https://github.com/maplibre/maplibre-native/pull/122) +* Return correct Mapbox TileServerOptions [#132](https://github.com/maplibre/maplibre-native/pull/132) + +### Other + +* Fix perf regression in cached tiles of tile pyramid [#129](https://github.com/maplibre/maplibre-native/pull/129) +* Upgrade to newest protozero [#148](https://github.com/maplibre/maplibre-native/pull/148) +* Fix build for Xcode 12.5 & 13-beta. [#153](https://github.com/maplibre/maplibre-native/pull/153) + +## 5.12.0 - June 29, 2021 + +### Features + +* Added allowScrollGesturesDuringRotateOrZoom [#60](https://github.com/maplibre/maplibre-native/pull/62) +* Replacing hardcoded configuration with configurable API and removing Mapbox assets and dependencies [#90](https://github.com/maplibre/maplibre-native/pull/90) + +### Bug Fixes + +* Fix map stuttering by switching render call to use setNeedsDisplay [#60](https://github.com/maplibre/maplibre-native/pull/60) +* Dispatch to main queue, rather than global [#64](https://github.com/maplibre/maplibre-native/pull/64) +* Use DisplayLink to prevent crashes in willResignActive [#68](https://github.com/maplibre/maplibre-native/pull/68) +* Ignore sizing and positioning for hidden elements in assertions [#80](https://github.com/maplibre/maplibre-native/pull/80) +* Disable map snapshots by default [#83](https://github.com/maplibre/maplibre-native/pull/83) + +## 5.11.0 - March 12, 2021 + +### Features + +* Added `MLNLocationManager.accuracyAuthorization` and `[MLNLocationManager requestTemporaryFullAccuracyAuthorizationWithPurposeKeyproperty:]` to support iOS 14 location accuracy privacy changes. (cherry pick from [#361](https://github.com/mapbox/mapbox-gl-native-ios/pull/361)) +* Added `[MLNLocationManager requestTemporaryFullAccuracyAuthorizationWithPurposeKeyproperty:]` to allow developers request just-in-time full-accuracy permissions. (cherry pick from [#361](https://github.com/mapbox/mapbox-gl-native-ios/pull/361)) +* Added `[MLNLocationManagerDelegate locationManagerDidChangeAuthorization:]` to let `MLNMapView` know about privacy changes. (cherry pick from [#376](https://github.com/mapbox/mapbox-gl-native-ios/pull/376)) +* Added `[MLNMapViewDelegate mapView:didChangeLocationManagerAuthorization:]` to allow developers adjust their apps to privacy settings changes. (cherry pick from [#376](https://github.com/mapbox/mapbox-gl-native-ios/pull/376)) +* Added an approximate user location halo when `MLNLocationManager.accuracyAuthorization` is set to `CLAccuracyAuthorizationReducedAccuracy`. (cherry pick from [#381](https://github.com/mapbox/mapbox-gl-native-ios/pull/381)) +* The `MLNAccuracyAuthorizationDescription` as element of `NSLocationTemporaryUsageDescriptionDictionary` Info.plist key can now be set to describe why you request accuracy authorization. (cherry pick from [#392](https://github.com/mapbox/mapbox-gl-native-ios/pull/392)) +* Added `[MLNMapViewDelegate mapViewStyleForDefaultUserLocationAnnotationView:]` and `MLNUserLocationAnnotationViewStyle` class to allow developers customize the default user location annotation view UI style. (cherry pick from [#403](https://github.com/mapbox/mapbox-gl-native-ios/pull/403)) + +### Bug Fixes + +* Fixed an issue that caused a crash when custom location managers did not implement `MLNLocationManager.accuracyAuthorization`. (cherry pick from [#474](https://github.com/mapbox/mapbox-gl-native-ios/pull/474)) +* Fixed an issue where symbols flickered when zooming out. [#16](https://github.com/maplibre/maplibre-native/issues/16) +* Benchmark app updated and fixes to the latest xcode version +* iOS performance improvements [#44](https://github.com/maplibre/maplibre-native/pull/44) + +### Other + +* mapbox-gl-js submodule has been replaced with maplibre-gl-js +* Removed Mapbox Mobile Events and Telemetry [#7](https://github.com/maplibre/maplibre-native/pull/7) + +## 5.10.0 - January 6, 2021 + +### Features + +* Added the mbtiles file source for rendering vector tiles from file stored locally on the device. + +## 5.9.0 + +### Styles and rendering + +* Added the `mgl_distanceFrom:` expression function for calculating the shortest distance between the evaluated feature and an `MLNPointAnnotation`, `MLNPointCollection`, `MLNPolyline`, `MLNMultiPolyline`, `MLNPolygon`, or `MLNMultiPolygon` that you specify as part of an `NSExpression` format string. ([#295](https://github.com/mapbox/mapbox-gl-native-ios/pull/295)) +* Added the `MLNCircleStyleLayer.circleSortKey` property. ([mapbox/mapbox-gl-native#15875](https://github.com/mapbox/mapbox-gl-native/pull/15875)) +* Chinese, Japanese, and Korean characters are now set in the font specified in style JSON or by the `MLNSymbolLayer.textFontNames` property. If the named font is not installed on the device or bundled with the application, the characters are set in a fallback font listed in the `MLNIdeographicFontFamilyName` key in the Info.plist file. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) +* The `MLNIdeographicFontFamilyName` key in the Info.plist file can now specify the fallback fonts for CJK characters by their PostScript names or display names in addition to font family names. For example, you can specify `NotoSansCJKjp-Bold` or `Noto Sans CJK JP Bold`, which ensures that the characters are set in bold. You can alternatively specify these font names in the `MLNIdeographicFontFamilyName` key of `NSUserDefaults.standardUserDefaults`. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) +* CJK characters are now laid out according to the font, so fonts with nonsquare glyphs have the correct kerning. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) +* Fixed an issue where the baseline for CJK characters was too low compared to non-CJK characters. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) +* Fixed a crash when calling the `-[MLNStyle removeImageForName:]` method with the name of a nonexistent image. ([mapbox/mapbox-gl-native#16391](https://github.com/mapbox/mapbox-gl-native/pull/16391)) +* Fixed an issue where properties such as `MLNFillStyleLayer.fillColor` and `MLNLineStyleLayer.lineColor` misinterpreted non-opaque `UIColor`s. ([#266](https://github.com/mapbox/mapbox-gl-native-ios/pull/266)) + +### Offline maps + +* Added the `-[MLNOfflinePack setContext:completionHandler:]` method for replacing the data associated with an offline pack, such as a name. ([#288](https://github.com/mapbox/mapbox-gl-native-ios/pull/288)) +* Added the `MLNOfflineStorage.databasePath` and `MLNOfflineStorage.databaseURL` properties to obtain the path of the database that contains offline packs and the ambient cache. To customize this path, set the `MLNOfflineStorageDatabasePath` in Info.plist. ([#298](https://github.com/mapbox/mapbox-gl-native-ios/pull/298)) +* Fixed an error that occurred if your implementation of the `-[MLNOfflineStorageDelegate offlineStorage:URLForResourceOfKind:]` method returned a local file URL. ([mapbox/mapbox-gl-native#16428](https://github.com/mapbox/mapbox-gl-native/pull/16428)) + +### Other changes + +* Fixed a crash when encountering an invalid polyline. ([mapbox/mapbox-gl-native#16409](https://github.com/mapbox/mapbox-gl-native/pull/16409)) +* Fixed an issue where an `MLNMapSnapshotOptions` with an invalid `MLNMapCamera.centerCoordinate`, negative `MLNMapCamera.heading`, negative `MLNMapCamera.pitch`, and negative `MLNMapSnapshotOptions.zoomLevel` resulted in a snapshot centered on Null Island at zoom level 0 even if the style specified a different initial center coordinate or zoom level. ([#280](https://github.com/mapbox/mapbox-gl-native-ios/pull/280)) +* Certain logging statements no longer run on the main thread. ([mapbox/mapbox-gl-native#16325](https://github.com/mapbox/mapbox-gl-native/pull/16325)) +* Fixed an issue that prevented the Maps SDK from warning about a misconfiguration that violated the Mapbox ToS. ([#288](https://github.com/mapbox/mapbox-gl-native-ios/pull/288)) + +## 5.8.0 + +### Styles and rendering + +* The `IN` and `CONTAINS` predicate operators can now test whether a string is a substring of another string or whether the evaluated feature (`SELF`) lies within a given `MLNShape` or `MLNFeature`. ([#183](https://github.com/mapbox/mapbox-gl-native-ios/pull/183), [#184](https://github.com/mapbox/mapbox-gl-native-ios/pull/184)) +* Added the `MLNLineStyleLayer.lineSortKey` and `MLNFillStyleLayer.fillSortKey` properties. ([#179](https://github.com/mapbox/mapbox-gl-native-ios/pull/179), [#16194](https://github.com/mapbox/mapbox-gl-native/pull/16194), [#16220](https://github.com/mapbox/mapbox-gl-native/pull/16220)) +* The `MLNSymbolStyleLayer.iconTextFit` property now respects the cap insets of any [nine-part stretchable image](https://developer.apple.com/documentation/uikit/uiimage#1658362) passed into the `-[MLNStyle setImage:forName:]` method. You can define the stretchable area in Xcode’s asset catalog or by calling the `-[UIImage resizableImageWithCapInsets:]` method. ([#182](https://github.com/mapbox/mapbox-gl-native-ios/pull/182)) +* Fixed an issue where an `MLNSymbolStyleLayer.lineDashPattern` value of `{1, 0}` resulted in hairline gaps. ([#16202](https://github.com/mapbox/mapbox-gl-native/pull/16202)) +* Improved the performance of loading a style that has many style images. ([#16187](https://github.com/mapbox/mapbox-gl-native/pull/16187)) + +### Snapshots + +* Added the `MLNMapSnapshotter.delegate` property and `MLNMapSnapshotterDelegate` protocol for customizing the style before taking a snapshot. ([#235](https://github.com/mapbox/mapbox-gl-native-ios/pull/235)) +* You no longer need to explicitly capture the `MLNMapSnapshotter` object in the completion handler that you specify in `-[MLNMapSnapshotter startWithCompletionHandler:]`. Even if you declare the snapshotter locally without holding a strong reference to it, the snapshotter is only deallocated after the completion handler finishes, and the completion handler generally receives a valid snapshot. ([#210](https://github.com/mapbox/mapbox-gl-native-ios/pull/210)) +* The `-[MLNMapSnapshotter cancel]` method no longer calls the completion handler passed into `-[MLNMapSnapshotter startWithCompletionHandler:]`. ([#210](https://github.com/mapbox/mapbox-gl-native-ios/pull/210)) +* Fixed an issue where the `MLNMapSnapshotter.loading` property always returned `NO`, even while loading a snapshot. ([#210](https://github.com/mapbox/mapbox-gl-native-ios/pull/210)) + +### Localization and internationalization + +* The `MLNIdeographicFontFamilyName` Info.plist key can now be set to the display names or PostScript names of individual fonts. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) +* The `-[MLNStyle localizeLabelsIntoLocale:]` and `-[NSExpression mgl_expressionLocalizedIntoLocale:]` methods can now localize text into Traditional Chinese and Vietnamese. ([#173](https://github.com/mapbox/mapbox-gl-native-ios/pull/173)) + +### Networking and storage + +* Downloaded offline packs no longer reduce the storage space available for ambient caching of tiles and other resources. ([#15622](https://github.com/mapbox/mapbox-gl-native/pull/15622)) +* Added the `-[MLNOfflineStorage preloadData:forURL:modificationDate:expirationDate:eTag:mustRevalidate:completionHandler:]` method for determining when the data is ready to retrieve from the cache. ([#188](https://github.com/mapbox/mapbox-gl-native-ios/pull/188)) +* Fixed issues where an offline pack would stop downloading before completion. ([#16230](https://github.com/mapbox/mapbox-gl-native/pull/16230), [#16240](https://github.com/mapbox/mapbox-gl-native/pull/16240)) +* When an offline pack encounters an HTTP 404 error, the `MLNOfflinePackUserInfoKeyError` user info key of the `MLNOfflinePackErrorNotification` now indicates the resource that could not be downloaded. ([#16240](https://github.com/mapbox/mapbox-gl-native/pull/16240)) + +### Other changes + +* Added the `MLNMapView.minimumPitch` and `MLNMapView.maximumPitch` properties to further limit how much the user or your code can tilt the map. ([#208](https://github.com/mapbox/mapbox-gl-native-ios/pull/208)) +* Fixed a crash while quitting the application after adding an annotation to `MLNMapView`. ([#252](https://github.com/mapbox/mapbox-gl-native-ios/pull/252)) +* Fixed an issue where the user location annotation view’s heading indicator did not rotate if Compass Calibration was disabled in the device’s Location Services settings. ([#247](https://github.com/mapbox/mapbox-gl-native-ios/pull/247)) +* Improved performance when continuously animating a tilted map. ([#16287](https://github.com/mapbox/mapbox-gl-native/pull/16287)) +* Fixed a memory leak when zooming with any options enabled in the `MLNMapView.debugMask` property. ([#15179](https://github.com/mapbox/mapbox-gl-native/issues/15179)) + +## 5.7.0 - February 13, 2020 + +### Bug fixes +* Fixed an issue where `MLNSymbolStyleLayer.symbolSortKey` could sort text and icons incorrectly. ([#16023](https://github.com/mapbox/mapbox-gl-native/pull/16023)) +* Fixed a crash when parsing GeoJSON sources. ([#16106](https://github.com/mapbox/mapbox-gl-native/pull/16106)) + +### Other changes +* Added new property `MLNMapView.panScrollingMode`, which allows you to limit the horizontal or vertical direction a user may pan on the map view. ([#108](https://github.com/mapbox/mapbox-gl-native-ios/pull/108)) +* Added the `image` expression function for converting an image name into a style image. Use this function in expressions in style JSON or with the `MLN_FUNCTION()` syntax in an `NSExpression` format string. Image expressions are compatible with the `mgl_attributed:` expression function and `MLNAttributedExpression` classes for embedding icons inline in text labels. ([#15877](https://github.com/mapbox/mapbox-gl-native/pull/15877), [#15937](https://github.com/mapbox/mapbox-gl-native/pull/15937)) + +## 5.6.1 - January 9, 2020 +* Fixed a crash that could occur when `MLNShapeSource` destroys its underlying data. ([#16106](https://github.com/mapbox/mapbox-gl-native/pull/16106)) + +## 5.6.0 - December 19, 2019 +This release includes a known issue where the binary size has increased. ([#63](https://github.com/mapbox/mapbox-gl-native-ios/issues/63)) + +### Packaging +* Integrates [`MapboxMobileEvents`](https://github.com/mapbox/mapbox-events-ios) as a dependency ([#60](https://github.com/mapbox/mapbox-gl-native-ios/pull/60)). As a result, the following installation processes have changed: + - CocoaPods: You now must include `use frameworks!` in your Podfile. + - Carthage: Specify `github "mapbox/mapbox-events-ios" == 0.10.2` in your Cartfile. Additionally, please note that if you are using `--no-use-binaries`, the `MapboxMobileEvents.framework` will still be installed as a dynamic framework. + - Manual installation: New Github release artifact (`mapbox-ios-sdk-5.6.0-beta.1-dynamic-with-events.zip`) contains the `MapboxMobileEvents.framework`; please install this along with `Mapbox.framework` + +### Networking and storage +* Expired resources are now fetched at a lower priority than new resources. ([#15950](https://github.com/mapbox/mapbox-gl-native/pull/15950)) + +### Bug fixes +* Fixed the rendering bug caused by redundant pending requests for already requested images [#15864](https://github.com/mapbox/mapbox-gl-native/pull/15864) +* Enable incremental vacuum for the offline database in order to make data removal requests faster and to avoid the excessive disk space usage (creating a backup file on VACUUM call). ([#15837](https://github.com/mapbox/mapbox-gl-native/pull/15837)) +* Fix ornaments' view constraints bug when devices change to bold-text mode. ([#57](https://github.com/mapbox/mapbox-gl-native-ios/pull/57)) +* Fixed an issue where style layers backed by a shape source could flicker when transitioning between styles. ([#15907](https://github.com/mapbox/mapbox-gl-native/pull/15907), [#15941](https://github.com/mapbox/mapbox-gl-native/pull/15941)) +* Fixed a crash when `MLNSymbolStyleLayer.textFontSize` is set to an expression that evaluates to `0`. ([#16080](https://github.com/mapbox/mapbox-gl-native/pull/16080)) + +### Other changes +* Convert GeoJSON features to tiles for the loaded source description in a background thread and thus unblock the UI thread ([#15885](https://github.com/mapbox/mapbox-gl-native/pull/15885)) + +## 5.5.1 - February 20, 2020 + +* Fixed an issue where `MLNSymbolStyleLayer.symbolSortKey` could sort text and icons incorrectly. ([#16023](https://github.com/mapbox/mapbox-gl-native/pull/16023)) +* Fixed an issue where style layers backed by a shape source could flicker when transitioning between styles. ([#15907](https://github.com/mapbox/mapbox-gl-native/pull/15907), [#15941](https://github.com/mapbox/mapbox-gl-native/pull/15941)) + +## 5.5.0 - November 5, 2019 + +### Performance improvements + +* Improved rendering performance for the styles with multiple sources ([#15756](https://github.com/mapbox/mapbox-gl-native/pull/15756)) + +### Styles and rendering + +* Added an `MLNShapeSourceOptionClusterProperties` option that allows styling individual clusters based on aggregated feature data. ([#15515](https://github.com/mapbox/mapbox-gl-native/pull/15515)) + +### Other changes + +* Added `-[MLNMapSnapshotOverlay coordinateForPoint:]` and `-[MLNMapSnapshotOverlay pointForCoordinate:]` to convert between context and map coordinates, mirroring those of `MLNMapSnapshot`. ([#15746](https://github.com/mapbox/mapbox-gl-native/pull/15746)) +* Suppress network requests for expired tiles update, if these tiles are invisible. ([#15741](https://github.com/mapbox/mapbox-gl-native/pull/15741)) +* Fixed an issue that cause the ornaments to ignore `MLNMapView.contentInset` property. ([#15584](https://github.com/mapbox/mapbox-gl-native/pull/15584)) +* Fixed an issue that cause `-[MLNMapView setCamera:withDuration:animationTimingFunction:edgePadding:completionHandler:]` persist the value of `edgePadding`. ([#15584](https://github.com/mapbox/mapbox-gl-native/pull/15584)) +* Added `MLNMapView.automaticallyAdjustsContentInset` property that indicates if wether the map view should automatically adjust its content insets. ([#15584](https://github.com/mapbox/mapbox-gl-native/pull/15584)) +* Fixed an issue that caused `MLNScaleBar` to have an incorrect size when resizing or rotating. ([#15703](https://github.com/mapbox/mapbox-gl-native/pull/15703)) +* Fixed crash at launch seen on iOS 9 simulator. ([#15771](https://github.com/mapbox/mapbox-gl-native/pull/15771)) +* Coalesce requests to the client for the same missing image ([#15778](https://github.com/mapbox/mapbox-gl-native/pull/15778)) + +## 5.4.0 - September 25, 2019 + +### Styles and rendering + +* Added an `-[MLNMapSnapshotter startWithOverlayHandler:completionHandler:]` method to provide the snapshot's current `CGContext` in order to perform custom drawing on `MLNMapSnapshot` objects. ([#15530](https://github.com/mapbox/mapbox-gl-native/pull/15530)) +* Fixed an issue that caused `MLNTileSourceOptionMaximumZoomLevel` to be ignored when setting `MLNTileSource.configurationURL`. ([#15581](https://github.com/mapbox/mapbox-gl-native/pull/15581)) +* Fixed an assertion hit caused by possibility of adding a layer to an incompatible source. ([#15644](https://github.com/mapbox/mapbox-gl-native/pull/15644)) +* Fixed crashes triggered when `MLNSource` and `MLNStyleLayer` objects are accessed after having been invalidated after a style change. ([#15539](https://github.com/mapbox/mapbox-gl-native/pull/15539)) +* Fixed an issue where the collision boxes for symbols would not be updated when `MLNSymbolStyleLayer.textTranslation` or `MLNSymbolStyleLayer.iconTranslation` were used. ([#15467](https://github.com/mapbox/mapbox-gl-native/pull/15467)) +* Enabled use of `MLNSymbolStyleLayer.textOffset` option together with `MLNSymbolStyleLayer.textVariableAnchor` (if `MLNSymbolStyleLayer.textRadialOffset` option is not provided). ([#15542](https://github.com/mapbox/mapbox-gl-native/pull/15542)) +* Fixed an issue that caused constant repainting for sources with invisible layers. ([#15600](https://github.com/mapbox/mapbox-gl-native/pull/15600)) + +### User interaction + +* Fixed an issue that caused the tilt gesture to trigger too easily and conflict with pinch or pan gestures. ([#15349](https://github.com/mapbox/mapbox-gl-native/pull/15349)) +* Fixed an issue that caused the map to rotate too easily during a pinch gesture. [(#15562)](https://github.com/mapbox/mapbox-gl-native/pull/15562) + +### Performance improvements + +* Improved offline region download performance by batching certain database activities. ([#15521](https://github.com/mapbox/mapbox-gl-native/pull/15521)) +* Newly loaded labels appear faster on the screen. ([#15308](https://github.com/mapbox/mapbox-gl-native/pull/15308)) + +### Other changes + +* Fixed a bug where the completion block passed to `-[MLNMapView flyToCamera:completionHandler:]` (and related methods) wouldn't be called. ([#15473](https://github.com/mapbox/mapbox-gl-native/pull/15473)) +* Fixed a crash when `-[MLNOfflinePack invalidate]` is called on different threads. ([#15582](https://github.com/mapbox/mapbox-gl-native/pull/15582)) +* Fixed a potential integer overflow at high zoom levels. ([#15560](https://github.com/mapbox/mapbox-gl-native/pull/15560)) +* Fixed a bug with annotation view positions after camera transitions. ([#15122](https://github.com/mapbox/mapbox-gl-native/pull/15122/)) + +## 5.3.2 - September 18, 2019 + +* Fixed an issue where `-[MLNMapView visibleFeaturesInRect:]` and `-[MLNShapeSource featuresMatchingPredicate:]` could return incorrect coordinates at zoom levels 20 and higher. ([#15560](https://github.com/mapbox/mapbox-gl-native/pull/15560)) + +## 5.3.1 - September 18, 2019 + +### Styles and rendering + +* Fixed an issue where connecting coincident holes in a polygon could lead to a race condition. ([#15660](https://github.com/mapbox/mapbox-gl-native/pull/15660)) + +### Other changes + +* Fixed an issue where the scale bar text would become illegible if iOS 13 dark mode was enabled. ([#15524](https://github.com/mapbox/mapbox-gl-native/pull/15524)) +* Fixed an issue with the appearance of the compass text in iOS 13. ([#15547](https://github.com/mapbox/mapbox-gl-native/pull/15547)) + +## 5.3.0 - August 28, 2019 + +This release changes how offline tile requests are billed — they are now billed on a pay-as-you-go basis and all developers are able raise the offline tile limit for their users. Offline requests were previously exempt from monthly active user (MAU) billing and increasing the offline per-user tile limit to more than 6,000 tiles required the purchase of an enterprise license. By upgrading to this release, you are opting into the changes outlined in [this blog post](https://blog.mapbox.com/offline-maps-for-all-bb0fc51827be) and [#15380](https://github.com/mapbox/mapbox-gl-native/pull/15380). + +### Styles and rendering + +* Fixed flickering on style change for the same tile set. ([#15127](https://github.com/mapbox/mapbox-gl-native/pull/15127)) +* Fixed performance issues when tilting a map with custom content insets. ([#15195](https://github.com/mapbox/mapbox-gl-native/pull/15195)) +* Fixed an issue where animated camera transitions zoomed in or out too dramatically. ([#15281](https://github.com/mapbox/mapbox-gl-native/pull/15281)) +* Enabled variable label placement when `MLNSymbolStyleLayer.textAllowsOverlap` is set to true. ([#15354](https://github.com/mapbox/mapbox-gl-native/pull/15354)) +* Added the `MLNSymbolStyleLayer.textWritingModes` layout property. This property can be set to `MLNTextWritingModeHorizontal` or `MLNTextWritingModeVertical`. ([#14932](https://github.com/mapbox/mapbox-gl-native/pull/14932)) +* Fixed rendering and collision detection issues with using `MLNSymbolStyleLayer.textVariableAnchor` and `MLNSymbolStyleLayer.iconTextFit` properties on the same layer. ([#15367](https://github.com/mapbox/mapbox-gl-native/pull/15367)) +* Fixed symbol overlap when zooming out quickly. ([#15416](https://github.com/mapbox/mapbox-gl-native/pull/15416)) +* Fixed an issue where non-template images would draw as template images when used in the same style layer. ([#15456](https://github.com/mapbox/mapbox-gl-native/pull/15456)) + +### Other changes + +* Fixed a bug where glyphs generated through the LocalGlyphRasterizer interface were changing fonts during some zoom changes. ([#15407](https://github.com/mapbox/mapbox-gl-native/pull/15407)) +* Fixed use of objects after moving, potentially causing crashes. ([#15408](https://github.com/mapbox/mapbox-gl-native/pull/15408)) +* Fixed a possible crash that could be caused by invoking the wrong layer implementation casting function. ([#15398](https://github.com/mapbox/mapbox-gl-native/pull/15398)) +* Fixed a rare crash when tile download requests returned “404 Not Found” errors. ([#15313](https://github.com/mapbox/mapbox-gl-native/pull/15313)) +* `MLNLoggingLevel` has been updated to better match core log levels. You can now use `MLNLoggingConfiguration.loggingLevel` to filter logs from core. ([#15120](https://github.com/mapbox/mapbox-gl-native/pull/15120)) +* Fixed an issue where the scale bar could show `0 mm` instead of `0`. ([#15381](https://github.com/mapbox/mapbox-gl-native/pull/15381)) + +## 4.11.2 - July 30, 2019 + +* Fixed a map update bug caused by the render tiles and the render passes becoming unsynchronized. ([#15092](https://github.com/mapbox/mapbox-gl-native/pull/15092)) +* Fixed a custom geometry source bug caused by using the outdated tiles after style update. ([#15112](https://github.com/mapbox/mapbox-gl-native/pull/15112)) + +## 5.0.2 - July 29, 2019 + +* Fixed an issue where fill extrusion layers would be incorrectly rendered above other layers. ([#15065](https://github.com/mapbox/mapbox-gl-native/pull/15065)) +* Fixed a map update bug caused by the render tiles and the render passes becoming unsynchronized. ([#15092](https://github.com/mapbox/mapbox-gl-native/pull/15092)) +* Fixed a custom geometry source bug caused by using the outdated tiles after style update. ([#15112](https://github.com/mapbox/mapbox-gl-native/pull/15112)) + +## 5.1.2 - July 25, 2019 + +* Fixed a crash during network access. ([#15113](https://github.com/mapbox/mapbox-gl-native/pull/15113)) + +## 5.2.0 - July 24, 2019 + +### Networking + +* Added methods to clear the ambient cache, change the size of the ambient cache, and to delete and revalidate the database that contains the ambient cache and offline packs ([#14978](https://github.com/mapbox/mapbox-gl-native/pull/14978)): + * `-[MLNOfflineStorage clearAmbientCacheWithCompletionHandler:]` + * `-[MLNOfflineStorage invalidateAmbientCacheWithCompletionHandler:]` + * `-[MLNOfflineStorage setMaximumAmbientCacheSize:withCompletionHandler:]` + * `-[MLNOfflineStorage resetDatabaseWithCompletionHandler:]` + * `-[MLNOfflineStorage invalidatePack:withCompletionHandler:]` + +### Styles and rendering + +* The `MLNIdeographicFontFamilyName` Info.plist key now also accepts an array of font family names, to customize font fallback behavior. It can also be set to a Boolean value of `NO` to force the SDK to typeset CJK characters in a remote font specified by `MLNSymbolStyleLayer.textFontNames`. ([#14862](https://github.com/mapbox/mapbox-gl-native/pull/14862)) +* Hiragana and katakana are now included in the range of CJK glyphs that are rendered locally by default. ([#15009](https://github.com/mapbox/mapbox-gl-native/pull/15009)) +* Fixed a map update bug caused by the render tiles and the render passes becoming unsynchronized. ([#15092](https://github.com/mapbox/mapbox-gl-native/pull/15092)) +* Added the `-[MLNMapViewDelegate mapView:shouldRemoveStyleImage:]` method for optimizing style image caching. ([#14769](https://github.com/mapbox/mapbox-gl-native/pull/14769)) +* Fixed style change transition regression caused by delayed setting of the updated layer properties. ([#15016](https://github.com/mapbox/mapbox-gl-native/pull/15016)) +* Fixed an issue where layers with fill extrusions would be incorrectly rendered above other layers. ([#15065](https://github.com/mapbox/mapbox-gl-native/pull/15065)) +* Improved feature querying performance. ([#14930](https://github.com/mapbox/mapbox-gl-native/pull/14930)) +* Fixed a custom geometry source bug caused by using the outdated tiles after style update ([#15112](https://github.com/mapbox/mapbox-gl-native/pull/15112)) + +### User interaction + +* Fixed an issue where annotations could not be selected. ([#15130](https://github.com/mapbox/mapbox-gl-native/pull/15130)) +* Fixed a bug where using the pinch gesture could result in an incorrect map center coordinate. ([#15097](https://github.com/mapbox/mapbox-gl-native/pull/15097)) +* Fixed an issue where the two-finger tilt gesture would continue after lifting one finger. ([#14969](https://github.com/mapbox/mapbox-gl-native/pull/14969)) + +### Offline maps + +* Ideographic glyphs from Chinese, Japanese, and Korean are no longer downloaded by default as part of offline packs; they are instead rendered on-device, saving bandwidth and storage while improving performance. ([#14176](https://github.com/mapbox/mapbox-gl-native/pull/14176)) +* Fixed an issue where offline regions could report the wrong number of tiles. ([#14958](https://github.com/mapbox/mapbox-gl-native/pull/14958)) + +### Packaging + +* Removed previously deprecated methods and properties that had been marked `unavailable`. ([#15000](https://github.com/mapbox/mapbox-gl-native/pull/15000)) +* The downloaded zip file of this framework no longer contains a local podspec. ([#15027](https://github.com/mapbox/mapbox-gl-native/pull/15027)) + +### Other changes + +* Added variants of several animated `MLNMapView` methods that accept completion handlers ([#14381](https://github.com/mapbox/mapbox-gl-native/pull/14381)): + * `-[MLNMapView setVisibleCoordinateBounds:edgePadding:animated:completionHandler:]` + * `-[MLNMapView setContentInset:animated:completionHandler:]` + * `-[MLNMapView setUserTrackingMode:animated:completionHandler:]` + * `-[MLNMapView setTargetCoordinate:animated:completionHandler:]` + * `-[MLNMapView showAnnotations:edgePadding:animated:completionHandler:]` + * `-[MLNMapView selectAnnotation:animated:completionHandler:]` +* Deprecated variants of the above methods without completion handlers. ([#14959](https://github.com/mapbox/mapbox-gl-native/pull/14959)) +* Added `MLNMapView.compassView.compassVisibility` and `MLNOrnamentVisibility` to allow configuration of compass visibility behavior. ([#15055](https://github.com/mapbox/mapbox-gl-native/pull/15055)) +* Fixed a crash during network access. ([#15113](https://github.com/mapbox/mapbox-gl-native/pull/15113)) +* Updated "map ID" to the more accurate term "tileset ID" in documentation; updated "style's Map ID" to the more accurate term "style URL". ([#15116](https://github.com/mapbox/mapbox-gl-native/pull/15116)) + +## 4.10.1 - July 19, 2019 + +* Fixed a bug in telemetry collection. ([#15077](https://github.com/mapbox/mapbox-gl-native/pull/15077)) + +## 4.11.1 - July 19, 2019 + +* Fixed a bug in telemetry collection. ([#15077](https://github.com/mapbox/mapbox-gl-native/pull/15077)) + +## 5.0.1 - July 18, 2019 + +* Fixed a bug in telemetry collection. ([#15077](https://github.com/mapbox/mapbox-gl-native/pull/15077)) + +## 5.1.1 - July 18, 2019 + +* Fixed a bug in telemetry collection. ([#15077](https://github.com/mapbox/mapbox-gl-native/pull/15077)) + +## 5.1.0 - June 19, 2019 + +### Styles and rendering + +* Fixed a crash when a fill pattern in a style could not be found. ([#14696](https://github.com/mapbox/mapbox-gl-native/pull/14696)) +* Fixed a rendering performance regression when rendering polylines. ([#14851](https://github.com/mapbox/mapbox-gl-native/pull/14851)) +* Fixed a rendering performance regression introduced in 4.11.0. ([#14907](https://github.com/mapbox/mapbox-gl-native/pull/14907)) +* Fixed an issue where symbols underneath opaque fill layers could be incorrectly drawn above such layers. ([#14839](https://github.com/mapbox/mapbox-gl-native/pull/14839)) +* Fixed an issue where `MLNFillExtrusionStyleLayer` vertical gradients might not be rendered. ([#14808](https://github.com/mapbox/mapbox-gl-native/pull/14808)) + +### Other changes + +* The `-[MLNMapView setCamera:withDuration:animationTimingFunction:edgePadding:completionHandler:]` method now adds the current value of the `MLNMapView.contentInset` property to the `edgePadding` parameter. ([#14813](https://github.com/mapbox/mapbox-gl-native/pull/14813)) +* Setting `MLNMapView.contentInset` now moves the map’s focal point to the center of the content frame after insetting. ([#14664](https://github.com/mapbox/mapbox-gl-native/pull/14664)) +* Fixed an issue where `-[MLNMapView visibleFeaturesInRect:]` and `-[MLNShapeSource featuresMatchingPredicate:]` omitted some features from the return value. ([#14884](https://github.com/mapbox/mapbox-gl-native/pull/14884)) + +## 5.0.0 - May 22, 2019 + +This release improves how monthly active users are counted. By upgrading to this release, you are opting into the changes outlined in [this blog post](https://www.mapbox.com/52219) and [#14421](https://github.com/mapbox/mapbox-gl-native/pull/14421). + +There are no breaking API changes in this release. + +### Styles and rendering + +* Changed placement order of `MLNSymbolStyleLayer` to match the viewport-y order when `MLNSymbolStyleLayer.symbolZOrder` is set to `MLNSymbolZOrderViewportY`, allowing icons to overlap but not text. ([#14486](https://github.com/mapbox/mapbox-gl-native/pull/14486)) +* Added `MLNSymbolStyleLayer.symbolSortKey` and `MLNSymbolZOrderAuto` to allow customization of symbol z-ordering. ([#14386](https://github.com/mapbox/mapbox-gl-native/pull/14386)) + +### Other changes + +* Fixed an issue where `-[MLNMapView setVisibleCoordinates:count:edgePadding:direction:duration:animationTimingFunction:completionHandler:]` interpreted a negative `direction` as due north instead of maintaining the current direction. ([#14575](https://github.com/mapbox/mapbox-gl-native/pull/14575)) + +## 4.11.0 - May 15, 2019 + +### Styles and rendering + +* Fixed a bug where some layers weren’t rendering correctly after panning. ([#14527](https://github.com/mapbox/mapbox-gl-native/pull/14527)) +* Speculatively fixed a rare background crash when receiving a memory warning. ([#14383](https://github.com/mapbox/mapbox-gl-native/pull/14383)) + +### Annotations + +* Fixed a bug with jittery callout views when using sprite-based annotations. ([#14445](https://github.com/mapbox/mapbox-gl-native/pull/14445)) + +### Other changes + +* Fixed an Interface Builder crash when using an `MLNMapView` in a storyboard. ([#14379](https://github.com/mapbox/mapbox-gl-native/pull/14379)) +* Fixed a bug that caused incorrect positioning of the attribution dialog after rotation. ([#14185](https://github.com/mapbox/mapbox-gl-native/pull/14185)) +* Improved `MLNLocationManager` optional protocol properties bridging to Swift. ([#14477](https://github.com/mapbox/mapbox-gl-native/pull/14477)) +* Fixed a layout constraints crash on iOS 9 when a view is removed from its superview. ([#14529](https://github.com/mapbox/mapbox-gl-native/pull/14529)) + +## 4.10.0 - April 17, 2019 + +### Styles and rendering + +* Client-side text rendering of CJK ideographs is now enabled by default. ([#13988](https://github.com/mapbox/mapbox-gl-native/pull/13988)) +* Fixed an issue that caused `MLN_FUNCTION` to ignore multiple formatting parameters when passed a `format` function as parameter. ([#14064](https://github.com/mapbox/mapbox-gl-native/pull/14064)) +* Added `mgl_attributed:` expression operator, which concatenates `MLNAttributedExpression` objects for specifying rich text in the `MLNSymbolStyleLayer.text` property. ([#14094](https://github.com/mapbox/mapbox-gl-native/pull/14094)) +* Fixed an issue that caused conditional expressions to crash when passed nested conditional expressions as parameters. ([#14181](https://github.com/mapbox/mapbox-gl-native/pull/14181)) +* Added `-[MLNMapViewDelegate mapView:didFailToLoadImage:]` to load missing symbol icons in the style if they are not found. ([#14302](https://github.com/mapbox/mapbox-gl-native/pull/14302)) +* Fixed a possible crash with certain expressions containing arguments that evaluate to a dictionary containing `NSArray` or `NSNumber` values. ([#14352](https://github.com/mapbox/mapbox-gl-native/pull/14352)) +* Fixed a bug where non-opaque `UIColor` values were ignored when assigned to a style layer color property. ([#14406](https://github.com/mapbox/mapbox-gl-native/pull/14406)) +* Speculatively fixed a bug where GL rendering could occur in the background. ([#14439](https://github.com/mapbox/mapbox-gl-native/pull/14439)) + +### Packaging + +* Added a Galician localization. ([#14095](https://github.com/mapbox/mapbox-gl-native/pull/14095)) +* Added support for building with Xcode 10.2 / iOS SDK 12.2. ([#14241](https://github.com/mapbox/mapbox-gl-native/pull/14241)) + +### Offline maps + +* Fixed a bug that caused offline packs created prior to v4.0.0 to be marked as `MLNOfflinePackStateInactive`. ([#14188](https://github.com/mapbox/mapbox-gl-native/pull/14188)) + +### Other changes + +* Added `MLNOrnamentPosition` enum and margin properties to customize scale bar, compass, logo, and attribution position within the map view. ([#13911](https://github.com/mapbox/mapbox-gl-native/pull/13911)) +* Added an `MLNMapView.prefetchesTiles` property to configure lower-resolution tile prefetching behavior. ([#14031](https://github.com/mapbox/mapbox-gl-native/pull/14031)) +* Speculatively fixed a performance issue seen on iOS 12.2, when an `MLNMapView` is repeatedly removed and re-added in a view hierarchy. ([#14264](https://github.com/mapbox/mapbox-gl-native/pull/14264)) + +## 4.9.0 - February 27, 2019 + +* Fixed a bug where setting `MLNMapView.userTrackingMode` to `MLNUserTrackingModeFollowWithHeading` or `MLNUserTrackingModeFollowWithCourse` would be ignored if the user’s location was not already available. ([#13849](https://github.com/mapbox/mapbox-gl-native/pull/13849)) +* Improved tilt gesture performance. ([#13902](https://github.com/mapbox/mapbox-gl-native/pull/13902)) +* Fixed a bug where `layoutSubviews` was always called on device rotation, regardless of the application's or top-most view controller's supported orientations. ([#13900](https://github.com/mapbox/mapbox-gl-native/pull/13900)) +* Added `MLNNetworkConfiguration` class to customize the SDK's `NSURLSessionConfiguration` object. ([#13886](https://github.com/mapbox/mapbox-gl-native/pull/13886)) + +## 4.8.0 - January 30, 2019 + +### Styles and rendering + +* Added an `MLNStyle.performsPlacementTransitions` property to control how long it takes for colliding labels to fade out. ([#13565](https://github.com/mapbox/mapbox-gl-native/pull/13565)) +* Fixed a crash when casting large numbers in `NSExpression`. ([#13580](https://github.com/mapbox/mapbox-gl-native/pull/13580)) +* Added the `-[MLNShapeSource leavesOfCluster:offset:limit:]`, `-[MLNShapeSource childrenOfCluster:]`, `-[MLNShapeSource zoomLevelForExpandingCluster:]` methods for inspecting a cluster in an `MLNShapeSource`s created with the `MLNShapeSourceOptionClustered` option. Feature querying now returns clusters represented by `MLNPointFeatureCluster` objects (that conform to the `MLNCluster` protocol). ([#12952](https://github.com/mapbox/mapbox-gl-native/pull/12952) + +### Annotations + +* Fixed a bug where the `animated` parameter to `-[MLNMapView selectAnnotation:animated:]` was being ignored. ([#13689](https://github.com/mapbox/mapbox-gl-native/pull/13689)) +* Fixed a bug where selecting partially on-screen annotations (without a callout) would move the map. ([#13727](https://github.com/mapbox/mapbox-gl-native/pull/13727)) + +### Packaging + +* Added a Czech localization. ([#13782](https://github.com/mapbox/mapbox-gl-native/pull/13782)) + +### Other changes + +* Reinstates version 11 as the default Mapbox Streets style (as introduced in 4.7.0). ([#13690](https://github.com/mapbox/mapbox-gl-native/pull/13690)) +* `MLNMapView` no longer freezes on external displays connected through AirPlay or CarPlay when the main device’s screen goes to sleep or the user manually locks the screen. ([#13701](https://github.com/mapbox/mapbox-gl-native/pull/13701)) +* Fixed an issue calculating the viewport when setting visible coordinates with a `direction`. ([#13761](https://github.com/mapbox/mapbox-gl-native/pull/13761)) + +## 4.7.1 - December 21, 2018 + +### Styles and rendering + +* Reverts the ability for `MLNMapView`, `MLNShapeOfflineRegion`, and `MLNTilePyramidOfflineRegion` to use version 11 of the Mapbox Streets style. ([#13650](https://github.com/mapbox/mapbox-gl-native/pull/13650)) +* Reverts the ability for convenience methods on `MLNStyle` such as `MLNStyle.lightStyleURL`, to use version 11 of the Mapbox Streets style. ([#13650](https://github.com/mapbox/mapbox-gl-native/pull/13650)) + +## 4.7.0 - December 18, 2018 + +### Packaging + +* Added the `Mapbox-iOS-SDK-stripped` build flavor, featuring fewer debug symbols. Regular framework binaries are no longer stripped of debug symbols and the `Mapbox-iOS-SDK-symbols` build has been retired. ([#13504](https://github.com/mapbox/mapbox-gl-native/pull/13504)) +* This SDK’s dynamic framework now has a bundle identifier of `com.mapbox.Mapbox`. ([#12857](https://github.com/mapbox/mapbox-gl-native/pull/12857)) +* `MLNMapView`, `MLNShapeOfflineRegion`, and `MLNTilePyramidOfflineRegion` now default to version 11 of the Mapbox Streets style. Similarly, several class properties of `MLNStyle`, such as `MLNStyle.lightStyleURL`, have been updated to return URLs to new versions of their respective styles. ([#13585](https://github.com/mapbox/mapbox-gl-native/pull/13585)) + +### Styles and rendering + +* Fixed an issue where the `{prefix}` token in tile URL templates was evaluated incorrectly when requesting a source’s tiles. ([#13429](https://github.com/mapbox/mapbox-gl-native/pull/13429)) +* Added an `-[MLNStyle removeSource:error:]` method that returns a descriptive error if the style fails to remove the source, whereas `-[MLNStyle removeSource:]` fails silently. ([#13399](https://github.com/mapbox/mapbox-gl-native/pull/13399)) +* Added the `MLNFillExtrusionStyleLayer.fillExtrusionHasVerticalGradient` property. ([#13463](https://github.com/mapbox/mapbox-gl-native/pull/13463)) +* Added support for setting `MLNCollisionBehaviorPre4_0` in `NSUserDefaults`. ([#13426](https://github.com/mapbox/mapbox-gl-native/pull/13426)) +* `-[MLNStyle localizeLabelsIntoLocale:]` and `-[NSExpression(MLNAdditions) mgl_expressionLocalizedIntoLocale:]` can automatically localize styles that use version 8 of the Mapbox Streets source. ([#13481](https://github.com/mapbox/mapbox-gl-native/pull/13481)) +* Fixed symbol flickering during instantaneous transitions. ([#13535](https://github.com/mapbox/mapbox-gl-native/pull/13535)) +* Fixed a crash when specifying `MLNShapeSourceOptionLineDistanceMetrics` when creating an `MLNShapeSource`. ([#13543](https://github.com/mapbox/mapbox-gl-native/pull/13543)) + +### Map snapshots + +* `MLNMapSnapshotter` now respects the `MLNIdeographicFontFamilyName` key in Info.plist, which reduces bandwidth consumption when snapshotting regions that contain Chinese or Japanese characters. ([#13427](https://github.com/mapbox/mapbox-gl-native/pull/13427)) +* Fixed a sporadic crash when using `MLNMapSnapshotter`. ([#13300](https://github.com/mapbox/mapbox-gl-native/pull/13300)) + +### Other changes + +* Modified the behavior of the map view so that programmatic camera transitions can no longer be interrupted by user interaction when `MLNMapView.zoomEnabled`, `MLNMapView.rotateEnabled`, `MLNMapView.scrollEnabled`, and `MLNMapView.pitchEnabled` are set to false. ([#13362](https://github.com/mapbox/mapbox-gl-native/pull/13362)) +* Renamed `-[MLNOfflineStorage putResourceWithUrl:data:modified:expires:etag:mustRevalidate:]` to `-[MLNOfflineStorage preloadData:forURL:modificationDate:expirationDate:eTag:mustRevalidate:]`. ([#13318](https://github.com/mapbox/mapbox-gl-native/pull/13318)) +* Points of interest have clearer, localized VoiceOver hints in styles that use version 8 of the Mapbox Streets source. ([#13525](https://github.com/mapbox/mapbox-gl-native/pull/13525)) +* Added `MLNLoggingConfiguration` and `MLNLoggingBlockHandler` that handle error and fault events produced by the SDK. ([#13235](https://github.com/mapbox/mapbox-gl-native/pull/13235)) +* Fixed random crashes during app termination. ([#13367](https://github.com/mapbox/mapbox-gl-native/pull/13367)) + +## 4.6.0 - November 7, 2018 + +### Styles and rendering + +* `MLNSymbolStyleLayer.text` can now be set to rich text with varying fonts and text sizes. ([#12624](https://github.com/mapbox/mapbox-gl-native/pull/12624)) +* Fixed a crash when using the `MLN_LET`, `MLN_MATCH`, `MLN_IF`, or `MLN_FUNCTION` functions without a colon inside an `NSExpression` or `NSPredicate` format string. ([#13189](https://github.com/mapbox/mapbox-gl-native/pull/13189)) +* Fixed a crash setting the `MLNLineStyleLayer.lineGradient` property to an expression containing the `$lineProgress` variable. Added an `NSExpression.lineProgressVariableExpression` class property that returns an expression for the `$lineProgress` variable. ([#13192](https://github.com/mapbox/mapbox-gl-native/pull/13192)) +* Feature querying can now return point features represented by icons that have both the `MLNSymbolStyleLayer.iconRotation` and `MLNSymbolStyleLayer.iconOffset` properties applied. ([#13105](https://github.com/mapbox/mapbox-gl-native/pull/13105)) +* Fixed an issue where polygons crossing tile boundaries could be improperly clipped. ([#13231](https://github.com/mapbox/mapbox-gl-native/pull/13231)) + +### Offline maps + +* Network requests by `MLNMapView` are now prioritized over offline pack downloads. ([#13019](https://github.com/mapbox/mapbox-gl-native/pull/13019)) +* Added the `-[MLNOfflineStorage putResourceWithUrl:data:modified:expires:etag:mustRevalidate:]` method to allow pre-warming of the ambient cache. ([#13119](https://github.com/mapbox/mapbox-gl-native/pull/13119)) + +### Other changes + +* Fixed an issue where the map view could not be panned after setting `MLNMapView.visibleCoordinateBounds` to a coordinate bounds that spanned exactly the longitudes −180° and 180°. ([#13006](https://github.com/mapbox/mapbox-gl-native/pull/13006)) +* Fixed an issue where snapshots had the wrong heading and pitch. ([#13123](https://github.com/mapbox/mapbox-gl-native/pull/13123)) +* Fixed an issue where `-[MLNMapViewDelegate mapView:shouldChangeFromCamera:toCamera:]` was called with an incorrectly rotated `newCamera` when the user rotated the map. ([#13123](https://github.com/mapbox/mapbox-gl-native/pull/13123)) + +## 4.5.0 - October 10, 2018 + +### Styles and rendering + +* Added support for 120 frames per second on capable devices. ([#12979](https://github.com/mapbox/mapbox-gl-native/pull/12979)) +* Added an `MLNSymbolStyleLayer.symbolZOrder` property for forcing point features in a symbol layer to be layered in the same order that they are specified in the layer’s associated source. ([#12783](https://github.com/mapbox/mapbox-gl-native/pull/12783)) +* Fixed a crash when the `MLNBackgroundStyleLayer.backgroundPattern`, `MLNFillExtrusionStyleLayer.fillExtrusionPattern`, `MLNFillStyleLayer.fillPattern`, or `MLNLineStyleLayer.linePattern` property evaluates to `nil` for a particular feature. ([#12896](https://github.com/mapbox/mapbox-gl-native/pull/12896)) +* Fixed an issue with view annotations (including the user location annotation) and the GL map lagging relative to each other. ([#12895](https://github.com/mapbox/mapbox-gl-native/pull/12895)) +* Fixed an issue where features in `MLNFillStyleLayer` and `MLNLineStyleLayer` would occasionally flicker when zooming in and out. ([#12982](https://github.com/mapbox/mapbox-gl-native/pull/12982)) +* Fixed a crash when casting a `UIColor` to a `UIColor` inside an `NSExpression`. ([#12864](https://github.com/mapbox/mapbox-gl-native/pull/12864)) +* `NIL` cast to an `NSNumber` now evaluates to 0 inside an `NSExpression`. ([#12864](https://github.com/mapbox/mapbox-gl-native/pull/12864)) +* Fixed a crash when applying the `to-array` operator to an empty array inside a JSON expression. ([#12864](https://github.com/mapbox/mapbox-gl-native/pull/12864)) +* Added the `MLNCollisionBehaviorPre4_0` Info.plist key to restore the collision detection behavior in version 3.7 of the SDK. ([#12941](https://github.com/mapbox/mapbox-gl-native/pull/12941)) + +### User location + +* Added `-[MLNMapViewDelegate mapViewUserLocationAnchorPoint:]` to customize the position of the user location annotation. ([#12907](https://github.com/mapbox/mapbox-gl-native/pull/12907)) +* Marked `MLNMapView.userLocationVerticalAlignment` as deprecated. Use `-[MLNMapViewDelegate mapViewUserLocationAnchorPoint:]` instead. ([#12907](https://github.com/mapbox/mapbox-gl-native/pull/12907)) +* Added the `-[MLNMapView updateUserLocationAnnotationView]` and `-[MLNMapView updateUserLocationAnnotationViewAnimatedWithDuration:]` methods to update the position of the user location annotation between location updates. ([#12907](https://github.com/mapbox/mapbox-gl-native/pull/12907)) +* Fixed an issue where the user location annotation was positioned incorrectly when the map view had a left or right content inset. ([#12907](https://github.com/mapbox/mapbox-gl-native/pull/12907)) + +### Offline maps + +* Added `-[MLNOfflineStorage addContentsOfFile:withCompletionHandler:]` and `-[MLNOfflineStorage addContentsOfURL:withCompletionHandler:]` methods to add pregenerated offline packs to offline storage. ([#12791](https://github.com/mapbox/mapbox-gl-native/pull/12791)) +* Fixed an issue where some tiles were rendered incorrectly when the device was unable to connect to the Internet. ([#12931](https://github.com/mapbox/mapbox-gl-native/pull/12931)) + +### Other changes + +* Added `MLNAltitudeForZoomLevel()` and `MLNZoomLevelForAltitude()` methods for converting between zoom levels used by `MLNMapView` and altitudes used by `MLNMapCamera`. ([#12986](https://github.com/mapbox/mapbox-gl-native/pull/12986)) +* Deprecated the `+[MLNMapCamera cameraLookingAtCenterCoordinate:fromDistance:pitch:heading:]` method in favor of `+[MLNMapCamera cameraLookingAtCenterCoordinate:altitude:pitch:heading:]` and `+[MLNMapCamera cameraLookingAtCenterCoordinate:acrossDistance:pitch:heading:]`. ([#12966](https://github.com/mapbox/mapbox-gl-native/pull/12966)) +* Fixed an issue where `+[MLNMapCamera cameraLookingAtCenterCoordinate:fromEyeCoordinate:eyeAltitude:]` created a camera looking from the wrong eye coordinate. ([#12966](https://github.com/mapbox/mapbox-gl-native/pull/12966)) +* Added an `MLNMapCamera.viewingDistance` property based on the existing `MLNMapCamera.altitude` property. ([#12966](https://github.com/mapbox/mapbox-gl-native/pull/12966)) +* Fixed an issue where `-[MLNMapSnapshotter startWithQueue:completionHandler:]` failed to call its completion handler in some cases. ([#12355](https://github.com/mapbox/mapbox-gl-native/pull/12355)) +* Fixed an issue where symbols from the events library could be duplicated when the maps SDK was used in conjunction with another Mapbox framework. ([#13008](https://github.com/mapbox/mapbox-gl-native/pull/13008)) + +## 4.4.1 - September 13, 2018 + +* Fixed several crashes related to telemetry collection. ([#12825](https://github.com/mapbox/mapbox-gl-native/pull/12825)) +* Fixed a crash when the network connection was offline. ([#12889](https://github.com/mapbox/mapbox-gl-native/pull/12889)) + +## 4.4.0 - September 12, 2018 + +### Styles and rendering + +* When a symbol in an `MLNSymbolStyleLayer` has both an icon and text, both are shown or hidden together based on available space. ([#12521](https://github.com/mapbox/mapbox-gl-native/pull/12521)) +* Invalid values of `MLNSymbolStyleLayer.textFontNames` are treated as warnings instead of errors. ([#12414](https://github.com/mapbox/mapbox-gl-native/pull/12414)) +* Added an `MLNLineStyleLayer.lineGradient` property that can be used to define a gradient with which to color a line feature. ([#12575](https://github.com/mapbox/mapbox-gl-native/pull/12575)) +* The `MLNLineStyleLayer.linePattern`, `MLNFillStyleLayer.fillPattern`, and `MLNFillExtrusionStyleLayer.fillExtrusionPattern` properties can now be set to expressions that refer to feature attributes. ([#12284](https://github.com/mapbox/mapbox-gl-native/pull/12284)) +* Reduced the amount of memory consumed by font data after changing the style. ([#12414](https://github.com/mapbox/mapbox-gl-native/pull/12414)) +* `-[MLNShapeSource initWithIdentifier:shape:options:]` warns about possible attribute loss when passing in an `MLNShapeCollection` object. ([#12625](https://github.com/mapbox/mapbox-gl-native/pull/12625)) +* Added an `MLNShapeSourceOptionLineDistanceMetrics` option that enables or disables calculating line distance metrics. ([#12604](https://github.com/mapbox/mapbox-gl-native/pull/12604)) +* Fixed an issue where the `cubic-bezier` curve type for `mgl_interpolate:withCurveType:parameters:stops:` expressions was misinterpreted for some style layer properties. ([#12826](https://github.com/mapbox/mapbox-gl-native/pull/12826)) +* Fixed an issue that could cause symbols to fade in during pan operations instead of always showing when using `MLNSymbolStyleLayer.iconAllowsOverlap` or `MLNSymbolStyleLayer.textAllowsOverlap` properties. ([#12698](https://github.com/mapbox/mapbox-gl-native/pull/12698)) + +### Offline maps + +* Added the `MLNShapeOfflineRegion` class for creating an offline pack that covers an arbitrary shape. ([#11447](https://github.com/mapbox/mapbox-gl-native/pull/11447)) +* Fixed crashes when offline storage encountered certain SQLite errors. ([#12224](https://github.com/mapbox/mapbox-gl-native/pull/12224)) + +### Other changes + +* The predefined values of `MLNMapView.decelerationRate` are now typed as `MLNMapViewDecelerationRate`s for improved bridging to Swift. ([#12584](https://github.com/mapbox/mapbox-gl-native/pull/12584)) +* Added an `-[MLNMapViewDelegate mapView:shapeAnnotationIsEnabled:]` method to specify whether an annotation is selectable. ([#12352](https://github.com/mapbox/mapbox-gl-native/pull/12352)) +* The `-[MLNMapView visibleFeaturesAtPoint:]` method can now return features near tile boundaries at high zoom levels. ([#12570](https://github.com/mapbox/mapbox-gl-native/pull/12570)) +* Fixed inconsistencies in exception naming. ([#12583](https://github.com/mapbox/mapbox-gl-native/issues/12583)) +* Fixed an issue where `-[MLNMapView convertCoordinateBounds:toRectToView:]` would return an empty CGRect if the bounds crossed the antimeridian. ([#12758](https://github.com/mapbox/mapbox-gl-native/pull/12758)) + +## 4.3.0 - August 15, 2018 + +### Styles and rendering + +* Added an `MLNMapView.preferredFramesPerSecond` property that controls the rate at which the map view is rendered. The default rate now adapts to device capabilities to provide a smoother experience. ([#12501](https://github.com/mapbox/mapbox-gl-native/issues/12501)) +* Token string syntax (`"{token}"`) in `MLNSymbolStyleLayer` `text` and `iconImageName` properties is now correctly converted to the appropriate `NSExpression` equivalent. ([#11659](https://github.com/mapbox/mapbox-gl-native/issues/11659)) +* Fixed a crash when switching between two styles having layers with the same identifier but different layer types. ([#12432](https://github.com/mapbox/mapbox-gl-native/issues/12432)) +* Added a new option to `MLNSymbolPlacement`, `MLNSymbolPlacementLineCenter`, that places the label relative to the center of the geometry. ([#12337](https://github.com/mapbox/mapbox-gl-native/pull/12337)) + +### User location + +* Added an `MLNMapView.locationManager` property and `MLNLocationManager` protocol for tracking user location using a custom alternative to `CLLocationManager`. ([#12013](https://github.com/mapbox/mapbox-gl-native/pull/12013)) +* Fixed a crash that occurred when `MMELocationManager` was deallocated and the delegate was reporting updates. ([#12542](https://github.com/mapbox/mapbox-gl-native/pull/12542)) + +### Other changes + +* Fixed a crash that occurred when the user started a gesture before the drift animation for a previous gesture was complete. ([#12148](https://github.com/mapbox/mapbox-gl-native/pull/12148)) +* Fixed an issue where the symbols for `MLNMapPointForCoordinate` could not be found. ([#12445](https://github.com/mapbox/mapbox-gl-native/issues/12445)) +* Fixed an issue causing country and ocean labels to disappear after calling `-[MLNStyle localizeLabelsIntoLocale:]` when the system language is set to Simplified Chinese. ([#12164](https://github.com/mapbox/mapbox-gl-native/issues/12164)) +* Closed a security vulnerability introduced in 4.1.0 that would potentially allow the owner of a style to compromise apps loading that style. ([#12571](https://github.com/mapbox/mapbox-gl-native/pull/12571)) +* Reduced binary size and improved performance by enabling LTO. ([#12502](https://github.com/mapbox/mapbox-gl-native/pull/12502)) + +## 4.0.5 - August 15, 2018 + +### Packaging + +* When integrating this framework using CocoaPods, the included bcsymbolmap files are now preserved. If you have bitcode enabled and you are seeing incorrectly symbolicated crash logs, you should create a build phase in your Xcode project that copies these bcsymbolmap files to your app’s Products Directory when installing. ([#12257](https://github.com/mapbox/mapbox-gl-native/pull/12257)) + +### Other changes + +* Added an `MLNMapView.locationManager` property and `MLNLocationManager` protocol for tracking user location using a custom alternative to `CLLocationManager`. ([#12013](https://github.com/mapbox/mapbox-gl-native/pull/12013)) + +## 4.2.0 - July 18, 2018 + +### Packaging + +* When integrating this framework using CocoaPods, the included bcsymbolmap files are now preserved. If you have bitcode enabled and you are seeing incorrectly symbolicated crash logs, you should create a build phase in your Xcode project that copies these bcsymbolmap files to your app’s Products Directory when installing. ([#12257](https://github.com/mapbox/mapbox-gl-native/pull/12257)) + +### Styles and rendering + +* Added an `MLNRasterStyleLayer.rasterResamplingMode` property for configuring how raster style layers are overscaled. ([#12176](https://github.com/mapbox/mapbox-gl-native/pull/12176)) +* `-[MLNStyle localizeLabelsIntoLocale:]` and `-[NSExpression mgl_expressionLocalizedIntoLocale:]` can automatically localize labels into Japanese or Korean based on the system’s language settings. ([#12286](https://github.com/mapbox/mapbox-gl-native/pull/12286)) +* The `c` and `d` options are supported within comparison predicates for case and diacritic insensitivity, respectively. ([#12329](https://github.com/mapbox/mapbox-gl-native/pull/12329)) +* Added the `collator` and `resolved-locale` expression operators to more precisely compare strings in style JSON. A subset of this functionality is available through predicate options when creating an `NSPredicate`. ([#11869](https://github.com/mapbox/mapbox-gl-native/pull/11869)) +* Fixed a crash when trying to parse expressions containing legacy filters. ([#12263](https://github.com/mapbox/mapbox-gl-native/pull/12263)) +* Fixed a crash that occurred when creating an `MLN_MATCH` expression using non-expressions as arguments. ([#12332](https://github.com/mapbox/mapbox-gl-native/pull/12332)) + +### Networking and storage + +* Improved caching performance. ([#12072](https://github.com/mapbox/mapbox-gl-native/pull/12072)) + +### Other changes + +* Added `-[MLNMapView camera:fittingShape:edgePadding:]` and `-[MLNMapView camera:fittingCoordinateBounds:edgePadding:]` allowing you specify the pitch and direction for the calculated camera. ([#12213](https://github.com/mapbox/mapbox-gl-native/pull/12213)) +* Added `-[MLNMapSnapshot coordinateForPoint:]` that returns a map coordinate for a specified snapshot image point. ([#12221](https://github.com/mapbox/mapbox-gl-native/pull/12221)) +* Reduced memory usage when collision debug mode is disabled. ([#12294](https://github.com/mapbox/mapbox-gl-native/issues/12294)) +* Fixed a bug with annotation view touch handling when a non-zero `centerOffset` is specified. ([#12234](https://github.com/mapbox/mapbox-gl-native/pull/12234)) + +## 4.0.4 - June 27, 2018 + +* Improved compatibility with Mapbox China APIs. ([#12233](https://github.com/mapbox/mapbox-gl-native/pull/12233)) + +## 4.0.3 - June 22, 2018 + +* Fixed a crash in `-[MLNStyle localizeLabelsIntoLocale:]` on iOS 9._x_. ([#12123](https://github.com/mapbox/mapbox-gl-native/pull/12123)) +* Improved compatibility with Mapbox China APIs. ([#11845](https://github.com/mapbox/mapbox-gl-native/pull/11845)) + +## 4.1.0 - June 20, 2018 + +### Packaging + +* The minimum deployment target for this SDK is now iOS 9.0. ([#11776](https://github.com/mapbox/mapbox-gl-native/pull/11776)) +* Removed support for the Fabric distribution platform. ([#12106](https://github.com/mapbox/mapbox-gl-native/pull/12106)) +* Improved compatibility with Mapbox China APIs. ([#11845](https://github.com/mapbox/mapbox-gl-native/pull/11845)) + +### Styles and rendering + +* Added support for aggregate expressions as input values to `MLN_MATCH` expressions. ([#11866](https://github.com/mapbox/mapbox-gl-native/pull/11866)) +* Fixed a crash that occurred when style JSON contained an invalid filter containing an expression. ([#12065](https://github.com/mapbox/mapbox-gl-native/pull/12065)) +* Fixed a crash in `-[MLNStyle localizeLabelsIntoLocale:]` on iOS 9._x_. ([#12123](https://github.com/mapbox/mapbox-gl-native/pull/12123)) +* Unknown tokens in URLs are now preserved, rather than replaced with an empty string. ([#11787](https://github.com/mapbox/mapbox-gl-native/issues/11787)) +* Fixed an issue preventing nested key path expressions from accessing the correct feature attributes. ([#11959](https://github.com/mapbox/mapbox-gl-native/pull/11959)) +* Fixed an issue where `MLNSymbolStyleLayer` flickered when straddling the antimeridian. ([#11938](https://github.com/mapbox/mapbox-gl-native/pull/11938)) +* Fixed an issue where certain `MLNLineStyleLayer.lineDashPattern` values produced unexpected rendering. ([#12114](https://github.com/mapbox/mapbox-gl-native/pull/12114)) + +### Other changes + +* Adjusted when and how the camera transition update and finish callbacks are called, fixing recursion bugs. ([#11614](https://github.com/mapbox/mapbox-gl-native/pull/11614)) +* Fixed an issue where `-[MLNMapViewDelegate mapView:tapOnCalloutForAnnotation:]` was called when the user tapped on transparent areas beneath the standard callout view. ([#11939](https://github.com/mapbox/mapbox-gl-native/pull/11939)) +* Improved `MLNMapView`’s performance when the scale bar is shown. ([#11921](https://github.com/mapbox/mapbox-gl-native/pull/11921)) +* Fixed a crash that could occur when reusing `MLNMapSnapshotter` or using multiple snapshotters at the same time. ([#11831](https://github.com/mapbox/mapbox-gl-native/pull/11831)) +* Fixed an issue where an empty `MLNFeature` array caused high CPU utilization. ([#11985](https://github.com/mapbox/mapbox-gl-native/pull/11985)) +* Improved offline download performance. ([#11284](https://github.com/mapbox/mapbox-gl-native/pull/11284)) +* Fixed an issue that caused `-[MLNMapView visibleFeaturesAtPoint:]` to return an empty array when adding or removing features. ([#12076](https://github.com/mapbox/mapbox-gl-native/pull/12076)) +* Improved application launch performance. ([#11784](https://github.com/mapbox/mapbox-gl-native/pull/11784)) + +## 4.0.2 - May 29, 2018 + +* Fixed a crash when constant expressions were used for style properties that didn't support data-driven styling. ([#11960](https://github.com/mapbox/mapbox-gl-native/issues/11960)) +* Improved symbol querying. ([#11571](https://github.com/mapbox/mapbox-gl-native/pull/11571), [#11742](https://github.com/mapbox/mapbox-gl-native/pull/11742)) + +## 4.0.1 - May 14, 2018 + +### Packaging + +* Re-added support for 32-bit simulators (i386) to work around an issue in CocoaPods. ([#11891](https://github.com/mapbox/mapbox-gl-native/pull/11891)) +* Added a Korean localization. ([#11792](https://github.com/mapbox/mapbox-gl-native/pull/11792)) + +### Style layers + +* Deprecated `+[NSExpression featurePropertiesVariableExpression]`; use `+[NSExpression featureAttributesVariableExpression]` instead. ([#11748](https://github.com/mapbox/mapbox-gl-native/pull/11748)) +* Added an `-[NSPredicate(MLNAdditions) predicateWithMLNJSONObject:]` method and `NSPredicate.mgl_jsonExpressionObject` property. ([#11810](https://github.com/mapbox/mapbox-gl-native/pull/11810)) +* Added `FIRST`, `LAST`, and `SIZE` symbolic array subscripting support to expressions. ([#11770](https://github.com/mapbox/mapbox-gl-native/pull/11770)) +* Inside an expression, casting `nil` to a string turns it into the empty string instead of the string `"null"`. ([#11904](https://github.com/mapbox/mapbox-gl-native/pull/11904)) +* Fixed an issue where certain colors were being misrepresented in `NSExpression` obtained from `MLNStyleLayer` getters. ([#11725](https://github.com/mapbox/mapbox-gl-native/pull/11725)) + +### Annotations + +* Fixed an issue where selecting an onscreen annotation could move the map unintentionally. ([#11731](https://github.com/mapbox/mapbox-gl-native/pull/11731)) +* Fixed an issue where annotation views could become distorted if `rotatesToMatchCamera` was enabled. ([#11817](https://github.com/mapbox/mapbox-gl-native/pull/11817)) +* Fixed `MLNAnnotationView.rotatesToMatchCamera` overriding other transforms that might be applied to annotation views that had this property enabled. ([#11842](https://github.com/mapbox/mapbox-gl-native/pull/11842)) +* Fixed an issue where an `MLNOverlay` object straddling the antimeridian had an empty `MLNOverlay.overlayBounds` value. ([#11783](https://github.com/mapbox/mapbox-gl-native/pull/11783)) + +### Other changes + +* If English is the first language listed in the user’s Preferred Languages setting, `-[MLNStyle localizeLabelsIntoLocale:]` no longer prioritizes other languages over English. ([#11907](https://github.com/mapbox/mapbox-gl-native/pull/11907)) +* Fixed an issue where `-[MLNMapView metersPerPixelAtLatitude:]` was removed, but not marked as unavailable. ([#11765](https://github.com/mapbox/mapbox-gl-native/pull/11765)) +* Reduced per-frame render CPU time. ([#11811](https://github.com/mapbox/mapbox-gl-native/issues/11811)) + +## 3.7.8 - May 7, 2018 + +* Improved compatibility with Mapbox China APIs. ([#11845](https://github.com/mapbox/mapbox-gl-native/pull/11845)) + +## 3.7.7 - May 3, 2018 + +* Fixed a crash when removing an `MLNOfflinePack`. ([#11821](https://github.com/mapbox/mapbox-gl-native/issues/11821)) + +## 4.0.0 - April 19, 2018 + +The 4.0._x_ series of releases will be the last to support iOS 8. The minimum iOS deployment version will increase to iOS 9.0 in a future release. + +### Packaging + +* Removed support for 32-bit simulators. ([#10962](https://github.com/mapbox/mapbox-gl-native/pull/10962)) +* Added Danish, Hebrew, and European Portuguese localizations. ([#10967](https://github.com/mapbox/mapbox-gl-native/pull/10967), [#11136](https://github.com/mapbox/mapbox-gl-native/pull/11134), [#11695](https://github.com/mapbox/mapbox-gl-native/pull/11695)) +* Removed methods, properties, and constants that had been deprecated as of v3.7.6. ([#11205](https://github.com/mapbox/mapbox-gl-native/pull/11205), [#11681](https://github.com/mapbox/mapbox-gl-native/pull/11681)) +* Refined certain Swift interfaces by converting them from class methods to class properties. ([#11674](https://github.com/mapbox/mapbox-gl-native/pull/11674)) +* Revamped the “Adding Points to a Map” guide. ([#11496](https://github.com/mapbox/mapbox-gl-native/pull/11496)) + +### Style layers + +* The layout and paint properties on subclasses of `MLNStyleLayer` are now of type `NSExpression` instead of `MLNStyleValue`. A new “Predicates and Expressions” guide provides an overview of the supported operators, which include arithmetic and conditional operators. ([#10726](https://github.com/mapbox/mapbox-gl-native/pull/10726)) +* A style can now display a heatmap layer that visualizes a point data distribution. You can customize the appearance at runtime using the `MLNHeatmapStyleLayer` class. ([#11046](https://github.com/mapbox/mapbox-gl-native/pull/11046)) +* A style can now display a smooth hillshading layer and customize its appearance at runtime using the `MLNHillshadeStyleLayer` class. Hillshading is based on a rasterized digital elevation model supplied by the `MLNRasterDEMSource` class. ([#10642](https://github.com/mapbox/mapbox-gl-native/pull/10642)) +* You can now set the `MLNVectorStyleLayer.predicate` property to a predicate that contains arithmetic and calls to built-in `NSExpression` functions. You may need to cast a feature attribute key to `NSString` or `NSNumber` before comparing it to a string or number. ([#11587](https://github.com/mapbox/mapbox-gl-native/pull/11587)) +* Replaced the `MLNStyle.localizesLabels` property with an `-[MLNStyle localizeLabelsIntoLocale:]` method that allows you to specify the language to localize into. Also added an `-[NSExpression(MLNAdditions) mgl_expressionLocalizedIntoLocale:]` method for localizing an individual value used with `MLNSymbolStyleLayer.text`. ([#11651](https://github.com/mapbox/mapbox-gl-native/pull/11651)) +* The `MLNSymbolStyleLayer.textFontNames` property can now depend on a feature’s attributes. ([#10850](https://github.com/mapbox/mapbox-gl-native/pull/10850)) +* Changes to the `MLNStyleLayer.minimumZoomLevel` and `MLNStyleLayer.maximumZoomLevel` properties take effect immediately. ([#11399](https://github.com/mapbox/mapbox-gl-native/pull/11399)) + +### Content sources + +* Renamed `MLNRasterSource` to `MLNRasterTileSource` and `MLNVectorSource` to `MLNVectorTileSource`. ([#11568](https://github.com/mapbox/mapbox-gl-native/pull/11568)) +* Added an `MLNComputedShapeSource` class that allows applications to supply vector data to a style layer on a per-tile basis. ([#9983](https://github.com/mapbox/mapbox-gl-native/pull/9983)) +* Properties such as `MLNSymbolStyleLayer.iconAllowsOverlap` and `MLNSymbolStyleLayer.iconIgnoresPlacement` now account for symbols in other sources. ([#10436](https://github.com/mapbox/mapbox-gl-native/pull/10436)) + +### Map rendering + +* Improved the reliability of collision detection between symbols near the edges of tiles, as well as between symbols when the map is tilted. It is no longer necessary to enable `MLNSymbolStyleLayer.symbolAvoidsEdges` to prevent symbols in adjacent tiles from overlapping with each other. ([#10436](https://github.com/mapbox/mapbox-gl-native/pull/10436)) +* Symbols can fade in and out as the map pans, rotates, or tilts. ([#10436](https://github.com/mapbox/mapbox-gl-native/pull/10436)) +* Fixed an issue preventing a dynamically-added `MLNRasterStyleLayer` from drawing until the map pans. ([#10270](https://github.com/mapbox/mapbox-gl-native/pull/10270)) +* Fixed an issue preventing `MLNImageSource`s from drawing on the map when the map is zoomed in and tilted. ([#10677](https://github.com/mapbox/mapbox-gl-native/pull/10677)) +* Improved the sharpness of raster tiles on Retina displays. ([#10984](https://github.com/mapbox/mapbox-gl-native/pull/10984)) +* Fixed a crash parsing a malformed style. ([#11001](https://github.com/mapbox/mapbox-gl-native/pull/11001)) +* Reduced memory usage by clearing in-memory tile cache before entering background. ([#11197](https://github.com/mapbox/mapbox-gl-native/pull/11197)) +* Fixed an issue where symbols with empty labels would always be hidden. ([#11206](https://github.com/mapbox/mapbox-gl-native/pull/11206)) +* Fixed an issue where a tilted map could flicker while displaying rotating symbols. ([#11488](https://github.com/mapbox/mapbox-gl-native/pull/11488)) +* Increased the maximum width of labels by a factor of two. ([#11508](https://github.com/mapbox/mapbox-gl-native/pull/11508)) + +### Annotations + +* Changed the default value of `MLNAnnotationView.scalesWithViewingDistance` to `NO`, to improve performance. If your use case involves many annotation views, consider keeping this property disabled. ([#11636](https://github.com/mapbox/mapbox-gl-native/pull/11636)) +* Fixed an issue preventing `MLNAnnotationImage.image` from being updated. ([#10372](https://github.com/mapbox/mapbox-gl-native/pull/10372)) +* Improved performance of `MLNAnnotationView`-backed annotations that have `scalesWithViewingDistance` enabled. ([#10951](https://github.com/mapbox/mapbox-gl-native/pull/10951)) +* Fixed an issue where tapping a group of annotations may not have selected the nearest annotation. ([#11438](https://github.com/mapbox/mapbox-gl-native/pull/11438)) +* The `MLNMapView.selectedAnnotations` property (backed by `-[MLNMapView setSelectedAnnotations:]`) now selects annotations that are off-screen. ([#9790](https://github.com/mapbox/mapbox-gl-native/issues/9790)) +* The `animated` parameter to `-[MLNMapView selectAnnotation:animated:]` now controls whether the annotation and its callout are brought on-screen. If `animated` is `NO` then the annotation is selected if offscreen, but the map is not panned. Currently only point annotations are supported. Setting the `MLNMapView.selectedAnnotations` property now animates. ([#3249](https://github.com/mapbox/mapbox-gl-native/issues/3249)) +* Fixed a crash when rapidly adding and removing annotations. ([#11551](https://github.com/mapbox/mapbox-gl-native/issues/11551), [#11575](https://github.com/mapbox/mapbox-gl-native/issues/11575)) +* Marked protocol method `-[MLNCalloutView presentCalloutFromRect:inView:constrainedToView:animated:]` as unavailable. Use `-[MLNCalloutView presentCalloutFromRect:inView:constrainedToRect:animated:]` instead. ([#11738](https://github.com/mapbox/mapbox-gl-native/pull/11738)) + +### Map snapshots + +* Fixed a memory leak that occurred when creating a map snapshot. ([#10585](https://github.com/mapbox/mapbox-gl-native/pull/10585)) + +### Other changes + +* The `-[MLNMapView convertRect:toCoordinateBoundsFromView:]` method and the `MLNMapView.visibleCoordinateBounds` property’s getter now indicate that the coordinate bounds straddles the antimeridian by extending one side beyond ±180 degrees longitude. ([#11265](https://github.com/mapbox/mapbox-gl-native/pull/11265)) +* Feature querying results now account for the `MLNSymbolStyleLayer.circleStrokeWidth` property. ([#10897](https://github.com/mapbox/mapbox-gl-native/pull/10897)) +* Fixed an issue preventing labels from being transliterated when VoiceOver was enabled on iOS 10._x_ and below. ([#10881](https://github.com/mapbox/mapbox-gl-native/pull/10881)) +* Labels are now transliterated from more languages when VoiceOver is enabled. ([#10881](https://github.com/mapbox/mapbox-gl-native/pull/10881)) +* Long-pressing the attribution button causes the SDK’s version number to be displayed in the action sheet that appears. ([#10650](https://github.com/mapbox/mapbox-gl-native/pull/10650)) +* Reduced offline download sizes for styles with symbol layers that render only icons, and no text. ([#11055](https://github.com/mapbox/mapbox-gl-native/pull/11055)) +* Added haptic feedback that occurs when the user rotates the map to due north, configurable via `MLNMapView.hapticFeedbackEnabled`. ([#10847](https://github.com/mapbox/mapbox-gl-native/pull/10847)) +* Added `MLNMapView.showsScale` as the recommended way to show the scale bar. This property can be set directly in Interface Builder. ([#11335](https://github.com/mapbox/mapbox-gl-native/pull/11335)) +* Fixed an issue where the scale bar would not appear until the map had moved. ([#11335](https://github.com/mapbox/mapbox-gl-native/pull/11335)) + +## 3.7.6 - March 12, 2018 + +* Fixed an issue where full-resolution tiles could fail to replace lower-resolution placeholders. ([#11227](https://github.com/mapbox/mapbox-gl-native/pull/11227)) +* Fixed an issue where tilesets with bounds that cover the entire world would fail to render. ([#11425](https://github.com/mapbox/mapbox-gl-native/pull/11425)) +* Fixed a memory leak in `MLNMapSnapshotter`. ([#11193](https://github.com/mapbox/mapbox-gl-native/pull/11193)) +* Fixed an issue where the pinch gesture could drift beyond bounds imposed by `-[MLNMapViewDelegate mapView:shouldChangeFromCamera:toCamera:]`. ([#11423](https://github.com/mapbox/mapbox-gl-native/pull/11423)) +* Improved the visibility of the heading indicator arrow. ([#11337](https://github.com/mapbox/mapbox-gl-native/pull/11337)) + +## 3.7.5 - February 16, 2018 + +* Fixed an issue where requesting location services permission would trigger an unrecoverable loop. ([#11229](https://github.com/mapbox/mapbox-gl-native/pull/11229)) + +## 3.7.4 - February 12, 2018 + +* Added the `MLNTileSourceOptionTileCoordinateBounds` option to create an `MLNTileSource` that only supplies tiles within a specific geographic bounding box. ([#11141](https://github.com/mapbox/mapbox-gl-native/pull/11141)) +* Fixed an issue that caused `-[MLNMapSnapshotter pointForCoordinate:]` to return the wrong point. ([#11035](https://github.com/mapbox/mapbox-gl-native/pull/11035)) + +## 3.7.3 - January 10, 2018 + +* Fixed a crash while zooming while annotations are present on the map. ([#10791](https://github.com/mapbox/mapbox-gl-native/pull/10791)) +* CJK characters can be displayed in a locally installed font or a custom font bundled with the application, reducing map download times. Specify the font name using the `MLNIdeographicFontFamilyName` key in the application’s Info.plist file. ([#10522](https://github.com/mapbox/mapbox-gl-native/pull/10522)) +* Fixed a hang that could occur if the application makes many changes to user defaults immediately after launching. ([#10803](https://github.com/mapbox/mapbox-gl-native/pull/10803)) + +## 3.7.2 - December 21, 2017 + +### Packaging + +* Reduced the file size of the dSYM by removing the i386 architecture. Support for the i386 architecture (used by 32-bit simulators) will also be removed from the framework itself in a future release. ([#10781](https://github.com/mapbox/mapbox-gl-native/pull/10781)) + +### Other changes + +* Fixed an issue where removing a `MLNOpenGLStyleLayer` from a map might result in a crash. ([#10765](https://github.com/mapbox/mapbox-gl-native/pull/10765)) +* Added documentation for usage of coordinate bounds that cross the anti-meridian. ([#9804](https://github.com/mapbox/mapbox-gl-native/issues/9804)) +* Removed duplicated variables in `MLNMapSnapshotter`. ([#10702](https://github.com/mapbox/mapbox-gl-native/pull/10702)) + +## 3.7.1 - December 6, 2017 + +### Packaging + +* Renamed this SDK from Mapbox iOS SDK to Mapbox Maps SDK for iOS. ([#10610](https://github.com/mapbox/mapbox-gl-native/pull/10610)) + +### Annotations + +* Fixed incorrect hit targets for `MLNAnnotationImage`-backed annotations that caused `-[MLNMapViewDelegate mapView:didSelectAnnotation:]` to be called unnecessarily. ([#10538](https://github.com/mapbox/mapbox-gl-native/pull/10538)) + +### Other changes + +* Fixed an issue that caused `MLNMapView.minimumZoomLevel` to not be set. ([#10596](https://github.com/mapbox/mapbox-gl-native/pull/10596)) + +## 3.7.0 - Novemeber 13, 2017 + +### Networking and storage + +* Added a new `MLNMapSnapshotter` class for capturing rendered map images from an `MLNMapView`’s camera. ([#9891](https://github.com/mapbox/mapbox-gl-native/pull/9891)) +* Reduced the time it takes to create new `MLNMapView` instances in some cases. ([#9864](https://github.com/mapbox/mapbox-gl-native/pull/9864)) +* Added support for forced cache revalidation that will eliminate flickering that was sometimes visible for certain types of tiles (e.g., traffic tiles). ([#9670](https://github.com/mapbox/mapbox-gl-native/pull/9670), [#9103](https://github.com/mapbox/mapbox-gl-native/issues/9103)) +* Improved the performance of the SDK when parsing vector tile data used to render the map. ([#9312](https://github.com/mapbox/mapbox-gl-native/pull/9312)) + +### Styles + +* Added a new type of source, represented by the `MLNImageSource` class at runtime, that displays a georeferenced image. ([#9110](https://github.com/mapbox/mapbox-gl-native/pull/9110)) +* Setting a style using `MLNMapView`'s `styleURL` property now smoothly transitions from the previous style to the new style and maintains equivalent layers and sources along with their identifiers. ([#9256](https://github.com/mapbox/mapbox-gl-native/pull/9256)) +* Added `MLNCircleStyleLayer.circlePitchAlignment` and `MLNSymbolStyleLayer.iconPitchAlignment` properties to control whether circles and symbols lie flat against a tilted map. ([#9426](https://github.com/mapbox/mapbox-gl-native/pull/9426), [#9479](https://github.com/mapbox/mapbox-gl-native/pull/9479)) +* Added an `MLNSymbolStyleLayer.iconAnchor` property to control where an icon is anchored. ([#9849](https://github.com/mapbox/mapbox-gl-native/pull/9849)) +* The `maximumTextWidth` and `textLetterSpacing` properties of `MLNSymbolStyleLayer` are now compatible with `MLNSourceStyleFunction`s and `MLNCompositeStyleFunction`s, allowing data-driven styling of these properties. ([#9870](https://github.com/mapbox/mapbox-gl-native/pull/9870)) +* The `MLNSymbolStyleLayer.textAnchor`, `MLNSymbolStyleLayer.textJustification` and `MLNLineStyleLayer.lineJoin` properties are now compatible with `MLNSourceStyleFunction`s and `MLNCompositeStyleFunction`s, allowing data-driven styling of these properties. ([#9583](https://github.com/mapbox/mapbox-gl-native/pull/9583)) +* Improved the legibility of labels that follow lines when the map is tilted. ([#9009](https://github.com/mapbox/mapbox-gl-native/pull/9009)) +* Fixed an issue that could cause flickering when a translucent raster style layer was present. ([#9468](https://github.com/mapbox/mapbox-gl-native/pull/9468)) +* Fixed an issue that could cause antialiasing between polygons on the same layer to fail if the fill layers used data-driven styling for the fill color. ([#9699](https://github.com/mapbox/mapbox-gl-native/pull/9699)) +* The previously deprecated support for style classes has been removed. For interface compatibility, the API methods remain, but they are now non-functional. + +### Annotations + +* Fixed several bugs and performance issues related to the use of annotations backed by `MLNAnnotationImage`. The limits on the number and size of images and glyphs has been effectively eliminated and should now depend on hardware constraints. These fixes also apply to images used to represent icons in `MLNSymbolStyleLayer`. ([#9213](https://github.com/mapbox/mapbox-gl-native/pull/9213)) +* Added an `overlays` property to `MLNMapView`. ([#8617](https://github.com/mapbox/mapbox-gl-native/pull/8617)) +* Selecting an annotation no longer sets the user tracking mode to `MLNUserTrackingModeNone`. ([#10094](https://github.com/mapbox/mapbox-gl-native/pull/10094)) +* Added `-[MLNMapView cameraThatFitsShape:direction:edgePadding:]` to get a camera with zoom level and center coordinate computed to fit a shape. ([#10107](https://github.com/mapbox/mapbox-gl-native/pull/10107)) +* Added support selection of shape and polyline annotations.([#9984](https://github.com/mapbox/mapbox-gl-native/pull/9984)) +* Fixed an issue where view annotations could be slightly misaligned. View annotation placement is now rounded to the nearest pixel. ([#10219](https://github.com/mapbox/mapbox-gl-native/pull/10219)) +* Fixed an issue where a shape annotation callout was not displayed if the centroid was not visible. ([#10255](https://github.com/mapbox/mapbox-gl-native/pull/10255)) + +### User interaction + +* Users of VoiceOver can now swipe left and right to navigate among visible places, points of interest, and roads. ([#9950](https://github.com/mapbox/mapbox-gl-native/pull/9950)) +* Increased the default maximum zoom level from 20 to 22. ([#9835](https://github.com/mapbox/mapbox-gl-native/pull/9835)) +* Fixed an issue where the same value was passed in as the `oldCamera` and `newCamera` parameters to the `-[MLNMapViewDelegate mapView:shouldChangeFromCamera:toCamera:]` method. ([#10433](https://github.com/mapbox/mapbox-gl-native/pull/10433)) + +### Other changes + +* Added a Bulgarian localization. ([#10309](https://github.com/mapbox/mapbox-gl-native/pull/10309)) +* Fixed an issue that could cause line label rendering glitches when the line geometry is projected to a point behind the plane of the camera. ([#9865](https://github.com/mapbox/mapbox-gl-native/pull/9865)) +* Fixed an issue that could cause a crash when using `-[MLNMapView flyToCamera:completionHandler:]` and related methods with zoom levels at or near the maximum value. ([#9381](https://github.com/mapbox/mapbox-gl-native/pull/9381)) +* Added `-[MLNMapView showAttribution:]` to allow custom attribution buttons to show the default attribution interface. ([#10085](https://github.com/mapbox/mapbox-gl-native/pull/10085)) +* Fixed a conflict between multiple copies of SMCalloutView in a project. ([#10183](https://github.com/mapbox/mapbox-gl-native/pull/10183)) +* Fixed a crash when enabling the scale bar in iOS 8. ([#10241](https://github.com/mapbox/mapbox-gl-native/pull/10241)) + +## 3.6.4 - September 25, 2017 + +* Fixed an issue where stale (but still valid) map data could be ignored in offline mode. ([#10012](https://github.com/mapbox/mapbox-gl-native/pull/10012)) + +## 3.6.3 - September 15, 2017 + +* Added the option to display an always-on heading indicator with the default user location annotation, controlled via the `MLNMapView.showsUserHeadingIndicator` property. ([#9886](https://github.com/mapbox/mapbox-gl-native/pull/9886)) +* Fixed an issue where user heading tracking mode would update too frequently. ([#9845](https://github.com/mapbox/mapbox-gl-native/pull/9845)) +* Added support for iOS 11 location usage descriptions. ([#9869](https://github.com/mapbox/mapbox-gl-native/pull/9869)) +* Fixed an issue where `MLNUserLocation.location` did not follow its documented initialization behavior. This property will now properly return `nil` until the user’s location has been determined. ([#9639](https://github.com/mapbox/mapbox-gl-native/pull/9639)) +* `MLNMapView`’s `minimumZoomLevel` and `maximumZoomLevel` properties are now available in Interface Builder’s Attributes inspector. ([#9729](https://github.com/mapbox/mapbox-gl-native/pull/9729)) +* Deprecated `+[MLNStyle trafficDayStyleURL]` and `+[MLNStyle trafficNightStyleURL]` with no replacement method. To use the Traffic Day and Traffic Night styles going forward, we recommend that you use the underlying URL. ([#9918](https://github.com/mapbox/mapbox-gl-native/pull/9918)) +* Fixed a crash that sometimes occurred when a map view's view controller was deallocated. ([#9995](https://github.com/mapbox/mapbox-gl-native/pull/9995)) + +## 3.6.2 - August 18, 2017 + +* Added an `MLNStyle.localizesLabels` property, off by default, that localizes any Mapbox Streets–sourced symbol layer into the user’s preferred language. ([#9582](https://github.com/mapbox/mapbox-gl-native/pull/9582)) +* Added an additional camera method to MLNMapView that accepts an edge padding parameter. ([#9651](https://github.com/mapbox/mapbox-gl-native/pull/9651)) +* Fixed an issue with the scaling of the user location annotation’s horizontal accuracy indicator. ([#9721](https://github.com/mapbox/mapbox-gl-native/pull/9721)) +* Fixed an issue that caused `-[MLNShapeSource featuresMatchingPredicate:]` and `-[MLNVectorSource featuresInSourceLayersWithIdentifiers:predicate:]` to always return an empty array. ([#9784](https://github.com/mapbox/mapbox-gl-native/pull/9784)) + +## 3.6.1 - July 28, 2017 + +* Reduced the size of the dynamic framework by optimizing symbol visibility. ([#7604](https://github.com/mapbox/mapbox-gl-native/pull/7604)) +* Fixed an issue where the attribution button would have its custom tint color reset when the map view received a tint color change notification, such as when an alert controller was presented. ([#9598](https://github.com/mapbox/mapbox-gl-native/pull/9598)) +* Improved the behavior of zoom gestures when the map reaches the minimum zoom limit. ([#9626](https://github.com/mapbox/mapbox-gl-native/pull/9626)) +* Fixed an issue where tilt gesture was triggered with two fingers aligned vertically and panning down. ([#9571](https://github.com/mapbox/mapbox-gl-native/pull/9571)) +* Bitcode symbol maps (.bcsymbolmap files) are now included with the dynamic framework. ([#9613](https://github.com/mapbox/mapbox-gl-native/pull/9613)) + +## 3.6.0 - June 29, 2017 + +### Packaging + +* Xcode 8.0 or higher is now recommended for using this SDK. ([#8775](https://github.com/mapbox/mapbox-gl-native/pull/8775)) +* Fixed an issue in the static framework where localizations would never load. ([#9074](https://github.com/mapbox/mapbox-gl-native/pull/9074)) +* Updated MLNMapView’s logo view to display [the new Mapbox logo](https://www.mapbox.com/blog/new-mapbox-logo/). ([#8771](https://github.com/mapbox/mapbox-gl-native/pull/8771), [#8773](https://github.com/mapbox/mapbox-gl-native/pull/8773)) +* Added a Hungarian localization. ([#9347](https://github.com/mapbox/mapbox-gl-native/pull/9347)) + +### Styles + +* Added support for 3D extrusion of buildings and other polygonal features via the `MLNFillExtrusionStyleLayer` class and the `fill-extrusion` layer type in style JSON. ([#8431](https://github.com/mapbox/mapbox-gl-native/pull/8431)) +* MLNMapView and MLNTilePyramidOfflineRegion now default to version 10 of the Mapbox Streets style. Similarly, several style URL class methods of MLNStyle return URLs to version 10 styles. Unversioned variations of these methods are no longer deprecated. `MLNStyleDefaultVersion` should no longer be used with any style other than Streets. ([#6301](https://github.com/mapbox/mapbox-gl-native/pull/6301)) +* Added class methods to MLNStyle that correspond to the new [Traffic Day and Traffic Night](https://www.mapbox.com/blog/live-traffic-maps/) styles. ([#6301](https://github.com/mapbox/mapbox-gl-native/pull/6301)) +* MLNSymbolStyleLayer’s `iconImageName`, `iconScale`, `textFontSize`, `textOffset`, and `textRotation` properties can now be set to a source or composite function. ([#8544](https://github.com/mapbox/mapbox-gl-native/pull/8544), [#8590](https://github.com/mapbox/mapbox-gl-native/pull/8590), [#8592](https://github.com/mapbox/mapbox-gl-native/pull/8592), [#8593](https://github.com/mapbox/mapbox-gl-native/pull/8593)) +* Fixed an issue where setting the `MLNVectorStyleLayer.predicate` property failed to take effect if the relevant source was not in use by a visible layer at the time. ([#8653](https://github.com/mapbox/mapbox-gl-native/pull/8653)) +* Fixed an issue preventing programmatically added style layers from appearing in already cached tiles. ([#8954](https://github.com/mapbox/mapbox-gl-native/pull/8954)) +* Fixed an issue causing a composite function’s highest zoom level stop to be misinterpreted. ([#8613](https://github.com/mapbox/mapbox-gl-native/pull/8613), [#8790](https://github.com/mapbox/mapbox-gl-native/pull/8790)) +* Fixed an issue where re-adding a layer that had been previously removed from a style would reset its paint properties. Moved initializers for `MLNTileSource`, `MLNStyleLayer`, and `MLNForegroundStyleLayer` to their concrete subclasses; because these classes were already intended for initialization only via concrete subclasses, this should have no developer impact. ([#8626](https://github.com/mapbox/mapbox-gl-native/pull/8626)) +* Fixed a crash that occurred when removing a source that was still being used by one or more style layers. Since this is a programming error, a warning is logged to the console instead. ([#9129](https://github.com/mapbox/mapbox-gl-native/pull/9129)) +* Feature querying results now account for any changes to a feature’s size caused by a source or composite style function. ([#8665](https://github.com/mapbox/mapbox-gl-native/pull/8665)) +* Fixed the behavior of composite functions that specify fractional zoom level stops. ([#9289](https://github.com/mapbox/mapbox-gl-native/pull/9289)) +* Letter spacing is now disabled in Arabic text so that ligatures are drawn correctly. ([#9062](https://github.com/mapbox/mapbox-gl-native/pull/9062)) +* Improved the performance of styles using source and composite style functions. ([#9185](https://github.com/mapbox/mapbox-gl-native/pull/9185), [#9257](https://github.com/mapbox/mapbox-gl-native/pull/9257)) + +### Annotations + +* Added a new initializer to `MLNAnnotationView` so that it is possible to create a new instance with an associated annotation object. ([#9029](https://github.com/mapbox/mapbox-gl-native/pull/9029)) +* Added a new `rotatesToMatchCamera` property to `MLNAnnotationView` that, when set to true, causes the annotation view to rotate along with the map's rotation angle giving the appearance that the annoation view is pinned to the map. ([#9147](https://github.com/mapbox/mapbox-gl-native/pull/9147)) +* Fixed an issue causing a view-backed annotation to disappear immediately instead of animating when the annotation’s `coordinate` property is set to a value outside the current viewport. ([#8565](https://github.com/mapbox/mapbox-gl-native/pull/8565)) +* Fixed an issue in which `MLNMapView` overrode the tint colors of its annotation views. ([#8789](https://github.com/mapbox/mapbox-gl-native/pull/8789)) +* Fixed an issue causing annotation views to persist in the map’s annotation container view even after their associated annotations were removed. ([#9025](https://github.com/mapbox/mapbox-gl-native/pull/9025)) +* The `MLNPolyline.coordinate` and `MLNPolygon.coordinate` properties now return the midpoint and centroid, respectively, instead of the first coordinate. ([#8713](https://github.com/mapbox/mapbox-gl-native/pull/8713)) + +### User interaction + +* Added a scale bar to `MLNMapView` that indicates the scale of the map. ([#7631](https://github.com/mapbox/mapbox-gl-native/pull/7631)) +* Fixed an issue causing the map to go blank during a flight animation that travels a very short distance. ([#9199](https://github.com/mapbox/mapbox-gl-native/pull/9199)) +* Fixed an issue where gesture recognizers associated with map view interactivity were not disabled when their related interactions were disabled. ([#8304](https://github.com/mapbox/mapbox-gl-native/pull/8304)) +* Fixed an issue preventing the Mapbox Telemetry confirmation dialog from appearing when opened from within a map view in a modal view controller. ([#9027](https://github.com/mapbox/mapbox-gl-native/pull/9027)) +* Corrected the size of MLNMapView’s compass. ([#9060](https://github.com/mapbox/mapbox-gl-native/pull/9060)) +* The Improve This Map button in the attribution action sheet now leads to a feedback tool that matches MLNMapView’s rotation and pitch. `-[MLNAttributionInfo feedbackURLAtCenterCoordinate:zoomLevel:]` no longer respects the feedback URL specified in TileJSON. ([#9078](https://github.com/mapbox/mapbox-gl-native/pull/9078)) +* `-[MLNMapViewDelegate mapView:shouldChangeFromCamera:toCamera:]` can now block any panning caused by a pinch gesture. ([#9344](https://github.com/mapbox/mapbox-gl-native/pull/9344)) +* If the user taps on the map while it is flying to the user’s location, the user dot no longer appears in the incorrect location. ([#7916](https://github.com/mapbox/mapbox-gl-native/pull/7916)) +* Improved the responsiveness of the tilt gesture by reducing the initial recognition delay. ([#9386](https://github.com/mapbox/mapbox-gl-native/pull/9386)) + +### Other changes + +* Fixed a crash that occurred when accessing the `MLNMultiPolygon.coordinate` property. ([#8713](https://github.com/mapbox/mapbox-gl-native/pull/8713)) +* Fixed a crash or console spew when MLNMapView is initialized with a frame smaller than 64 points wide by 64 points tall. ([#8562](https://github.com/mapbox/mapbox-gl-native/pull/8562)) +* Fixed an issue that caused the compass and scale bar to underlap navigation and tab bars. ([#7716](https://github.com/mapbox/mapbox-gl-native/pull/7716)) +* The error passed into `-[MLNMapViewDelegate mapViewDidFailLoadingMap:withError:]` now includes a more specific description and failure reason. ([#8418](https://github.com/mapbox/mapbox-gl-native/pull/8418)) +* Improved CPU and battery performance while animating a tilted map’s camera in an area with many labels. ([#9031](https://github.com/mapbox/mapbox-gl-native/pull/9031)) +* Fixed an issue rendering polylines that contain duplicate vertices. ([#8808](https://github.com/mapbox/mapbox-gl-native/pull/8808)) +* Added struct boxing to `MLNCoordinateSpan`, `MLNCoordinateBounds`, `MLNOfflinePackProgress`, and `MLNTransition`. ([#9343](https://github.com/mapbox/mapbox-gl-native/pull/9343)) + +## 3.5.4 - May 9, 2017 + +* Fixed an issue that caused view backed annotations to become detached from the map view during pan gestures combined with animations of annotation view size or when the annotation view had no size but contained subviews with a non-zero size. ([#8926](https://github.com/mapbox/mapbox-gl-native/pull/8926)) + +## 3.5.3 - May 2, 2017 + +* Fixed an issue that prevented the attribution `UIAlertController` from showing in modal hierarchies. ([#8837](https://github.com/mapbox/mapbox-gl-native/pull/8837)) + +## 3.5.2 - April 7, 2017 + +* Fixed an issue that caused a crash when the user location annotation was presenting a callout view and the map was moved. ([#8686](https://github.com/mapbox/mapbox-gl-native/pull/8686)) +* This release was built with Xcode 8.3.1, which fixed [a significant bitcode issue](http://www.openradar.me/31302382) introduced in Xcode 8.3 that caused Mapbox iOS SDK 3.5.1 to be 2× larger than 3.5.0. + +## 3.5.1 - April 5, 2017 + +* Fixed an issue that caused the return type of a map view delegate method to bridge incorrectly to applications written in Swift. ([#8541](https://github.com/mapbox/mapbox-gl-native/pull/8541)) +* Fixed a crash that could occur when calling `-[MLNShapeSource featuresMatchingPredicate:]` or `-[MLNVectorSource featuresInSourceLayersWithIdentifiers:predicate:]`. ([#8553](https://github.com/mapbox/mapbox-gl-native/pull/8553)) +* Fixed a crash that could occur after adding view-backed annotations to the map. ([#8513](https://github.com/mapbox/mapbox-gl-native/pull/8513)) +* Renamed the “Data-Driven Styling” guide to “Using Style Functions at Runtime” and clarified the meaning of data-driven styling in the guide’s discussion of runtime style functions. ([#8627](https://github.com/mapbox/mapbox-gl-native/pull/8627)) + +## 3.5.0 - March 21, 2017 + +### Packaging + +* The minimum deployment target for this SDK is now iOS 8. ([#8129](https://github.com/mapbox/mapbox-gl-native/pull/8129)) +* Added support for the Carthage dependency manager. See [our website](https://www.mapbox.com/ios-sdk/) for setup instructions. ([#8257](https://github.com/mapbox/mapbox-gl-native/pull/8257)) +* While running your application in the iOS Simulator, you will receive a notice in the console if a newer version of this SDK is available. ([#8282](https://github.com/mapbox/mapbox-gl-native/pull/8282)) + +### Internationalization + +* Added support for right-to-left text and Arabic ligatures in labels. ([#6984](https://github.com/mapbox/mapbox-gl-native/pull/6984), [#7123](https://github.com/mapbox/mapbox-gl-native/pull/7123)) +* Improved the line wrapping behavior of point-placed labels, especially labels written in Chinese and Japanese. ([#6828](https://github.com/mapbox/mapbox-gl-native/pull/6828), [#7446](https://github.com/mapbox/mapbox-gl-native/pull/7446)) +* CJK characters now remain upright in vertically oriented labels that have line placement, such as road labels. ([#7114](https://github.com/mapbox/mapbox-gl-native/issues/7114)) +* Added Catalan, Chinese (Simplified and Traditional), Dutch, Finnish, French, German, Japanese, Lithuanian, Polish, Portuguese (Brazilian), Russian, Spanish, Swedish, Ukrainian, and Vietnamese localizations. ([#7316](https://github.com/mapbox/mapbox-gl-native/pull/7316), [#7899](https://github.com/mapbox/mapbox-gl-native/pull/7899), [#7999](https://github.com/mapbox/mapbox-gl-native/pull/7999), [#8113](https://github.com/mapbox/mapbox-gl-native/pull/8113), [#8256](https://github.com/mapbox/mapbox-gl-native/pull/8256)) + +### Styles + +* Added support for data-driven styling in the form of source and composite style functions. `MLNStyleFunction` is now an abstract class, with `MLNCameraStyleFunction` providing the behavior of `MLNStyleFunction` in previous releases. New `MLNStyleFunction` subclasses allow you to vary a style attribute by the values of attributes of features in the source. ([#7596](https://github.com/mapbox/mapbox-gl-native/pull/7596)) +* Added `circleStrokeColor`, `circleStrokeWidth`, and `circleStrokeOpacity` properties to MLNCircleStyleLayer and support for corresponding properties in style JSON files. ([#7356](https://github.com/mapbox/mapbox-gl-native/pull/7356)) +* Point-placed labels in symbol style layers are now placed at more optimal locations within polygons. ([#7465](https://github.com/mapbox/mapbox-gl-native/pull/7465)) +* Fixed flickering that occurred when manipulating a style layer. ([#7616](https://github.com/mapbox/mapbox-gl-native/pull/7616)) +* Symbol style layers can now render point collections (known as multipoints in GeoJSON). ([#7445](https://github.com/mapbox/mapbox-gl-native/pull/7445)) +* Added a `transition` property to MLNStyle to customize the timing of changes to style layers. ([#7711](https://github.com/mapbox/mapbox-gl-native/pull/7711)) +* Added properties to MLNStyleLayer subclasses to customize the timing of transitions between values of individual attributes. ([#8225](https://github.com/mapbox/mapbox-gl-native/pull/8225)) +* Fixed an issue causing lines and text labels toward the top of the map view to appear blurry when the map is tilted. ([#7444](https://github.com/mapbox/mapbox-gl-native/pull/7444)) +* Fixed incorrect interpolation of style functions in Boolean-typed style attributes. ([#7526](https://github.com/mapbox/mapbox-gl-native/pull/7526)) +* Removed support for the `ref` property in layers in style JSON files. ([#7586](https://github.com/mapbox/mapbox-gl-native/pull/7586)) +* Fixed an issue that collapsed consecutive newlines within text labels. ([#7446](https://github.com/mapbox/mapbox-gl-native/pull/7446)) +* Fixed artifacts when drawing particularly acute line joins. ([#7786](https://github.com/mapbox/mapbox-gl-native/pull/7786)) +* Fixed an issue in which a vector style layer predicate involving the `$id` key path would exclude all features from the layer. ([#7989](https://github.com/mapbox/mapbox-gl-native/pull/7989), [#7971](https://github.com/mapbox/mapbox-gl-native/pull/7971)) +* Fixed an issue causing vector style layer predicates to be evaluated as if each feature had a `$type` attribute of 1, 2, or 3. The `$type` key path can now be compared to `Point`, `LineString`, or `Polygon`, as described in the documentation. ([#7971](https://github.com/mapbox/mapbox-gl-native/pull/7971)) +* When setting an `MLNShapeSource`’s shape to an `MLNFeature` instance, any `UIColor` attribute value is now converted to the equivalent CSS string representation for use with `MLNInterpolationModeIdentity` in style functions. ([#8025](https://github.com/mapbox/mapbox-gl-native/pull/8025)) +* An exception is no longer thrown if layers or sources are removed from a style before they are added. ([#7962](https://github.com/mapbox/mapbox-gl-native/pull/7962)) +* Renamed MLNStyleConstantValue to MLNConstantStyleValue. For compatibility with previous releases, MLNStyleConstantValue is now an alias of MLNConstantStyleValue. ([#8090](https://github.com/mapbox/mapbox-gl-native/pull/8090)) +* Fixed a crash that could occur when switching styles after adding an MLNSource to the style. ([#8298](https://github.com/mapbox/mapbox-gl-native/pull/8298)) + +### Annotations and user interaction + +* Added a method to MLNMapViewDelegate, `-mapView:shouldChangeFromCamera:toCamera:`, that you can implement to restrict which parts the user can navigate to using gestures. ([#5584](https://github.com/mapbox/mapbox-gl-native/pull/5584)) +* Annotations are no longer deselected when the map is panned or zoomed, even if the annotation moves out of the visible bounds. ([#8022](https://github.com/mapbox/mapbox-gl-native/pull/8022)) +* Changing the coordinates of a point annotation no longer deselects the annotation. ([#8269](https://github.com/mapbox/mapbox-gl-native/pull/8269)) +* Fixed an issue that could cause a crash when point annotations were added and removed while simultaneously querying source features. ([#8374](https://github.com/mapbox/mapbox-gl-native/pull/8374)) +* Fixed an issue preventing MLNMapView from adding a polyline annotation with the same coordinates as a polygon annotation. ([#8355](https://github.com/mapbox/mapbox-gl-native/pull/8355)) +* Fixed an issue where translucent, non-view-backed point annotations along tile boundaries would be drawn darker than expected. ([#6832](https://github.com/mapbox/mapbox-gl-native/pull/6832)) +* Double-tap and two-finger tap gestures now zoom to the nearest integer zoom level. ([#8027](https://github.com/mapbox/mapbox-gl-native/pull/8027)) +* The `MLNAnnotationView.annotation` property is now read-write. ([#8139](https://github.com/mapbox/mapbox-gl-native/pull/8139)) +* Enabled the one-finger zoom gesture on iPad. To execute this gesture, tap twice; on second tap, hold your finger on the map and pan up to zoom in, or down to zoom out. ([#8379](https://github.com/mapbox/mapbox-gl-native/pull/8379)) + +### Networking and offline maps + +* Offline pack notifications are now posted by `MLNOfflinePack` instances instead of the shared `MLNOfflineStorage` object. For backwards compatibility, the `userInfo` dictionary still indicates the pack’s state and progress. ([#7952](https://github.com/mapbox/mapbox-gl-native/pull/7952)) +* Fixed a memory leak in MLNMapView. ([#7956](https://github.com/mapbox/mapbox-gl-native/pull/7956)) +* Fixed an issue that could prevent a cached style from appearing while the device is offline. ([#7770](https://github.com/mapbox/mapbox-gl-native/pull/7770)) +* Fixed an issue that could prevent a style from loading when reestablishing a network connection. ([#7902](https://github.com/mapbox/mapbox-gl-native/pull/7902)) +* `MLNOfflineStorage` instances now support a delegate conforming to `MLNOfflineStorageDelegate`, which allows altering URLs before they are requested from the Internet. ([#8084](https://github.com/mapbox/mapbox-gl-native/pull/8084)) + +### Other changes + +* Fixed an issue that, among other things, caused various islands to disappear at certain zoom levels. ([#7621](https://github.com/mapbox/mapbox-gl-native/pull/7621)) +* Added a method to MLNMapView that allows you to specify a predicate when querying for visible features. ([#8256](https://github.com/mapbox/mapbox-gl-native/pull/8246)) +* Fixed flickering that occurred when panning past the antimeridian. ([#7574](https://github.com/mapbox/mapbox-gl-native/pull/7574)) +* Fixed an issue that sometimes caused crashes when the SDK interacted with the file system in the background. ([#8125](https://github.com/mapbox/mapbox-gl-native/pull/8125)) +* Added a `MLNDistanceFormatter` class for formatting geographic distances. ([#7888](https://github.com/mapbox/mapbox-gl-native/pull/7888)) +* Fixed an issue that was causing the system location indicator to stay on in background after telemetry was disabled. ([#7833](https://github.com/mapbox/mapbox-gl-native/pull/7833)) +* Added support for predicates in rendered feature querying [8256](https://github.com/mapbox/mapbox-gl-native/pull/8246) +* Added a nightly build of the dynamic framework. ([#8337](https://github.com/mapbox/mapbox-gl-native/pull/8337)) + +## 3.4.2 - February 21, 2017 + +This is the final scheduled version of the Mapbox iOS SDK that supports iOS 7. ([#8129](https://github.com/mapbox/mapbox-gl-native/pull/8129)) + +* A programmatic change to an MLNMapView’s camera no longer resets the user tracking mode. ([#7856](https://github.com/mapbox/mapbox-gl-native/pull/7856)) +* Improved the performance of trivial camera animations. ([#7125](https://github.com/mapbox/mapbox-gl-native/pull/7125)) +* Added a guide detailing the built-in gesture recognizers and various ways to configure them. ([#7937](https://github.com/mapbox/mapbox-gl-native/pull/7937)) + +## 3.4.1 - January 25, 2017 + +* Fixed a build error in the static framework flavor of this SDK caused by a missing header. ([#7844](https://github.com/mapbox/mapbox-gl-native/pull/7844)) +* Fixed an issue causing MLNMapView’s `camera`’s `heading` to be set to a negative value, indicating an undefined heading, when the map view faces northwest. The heading is now wrapped to between zero and 360 degrees, for consistency with MLNMapView’s `direction` property. ([#7724](https://github.com/mapbox/mapbox-gl-native/pull/7724)) +* Fixed an issue where MLNMapView could initially flash black before loading. ([#7859](https://github.com/mapbox/mapbox-gl-native/pull/7859)) +* Deprecated the style class methods in MLNStyle. ([#7785](https://github.com/mapbox/mapbox-gl-native/pull/7785)) + +## 3.4.0 - January 20, 2017 + +### Packaging + +* Xcode 7.3 or above is required for using this SDK. ([#6059](https://github.com/mapbox/mapbox-gl-native/issues/6059)) +* Clarified that the `-ObjC` linker flag is required for linking against the static framework distribution of this SDK. ([#6213](https://github.com/mapbox/mapbox-gl-native/pull/6213)) +* The API reference has a sharper look. ([#7422](https://github.com/mapbox/mapbox-gl-native/pull/7422)) +* Added documentation for the Info.plist keys used by this SDK. ([#6833](https://github.com/mapbox/mapbox-gl-native/pull/6833)) + +### Styles and data + +* A new runtime styling API allows you to adjust the style and content of the base map dynamically. All the options available in [Mapbox Studio](https://www.mapbox.com/studio/) are now exposed via MLNStyle and subclasses of MLNStyleLayer and MLNSource. ([#5727](https://github.com/mapbox/mapbox-gl-native/pull/5727)) +* MLNMapView’s `styleURL` property can now be set to an absolute file URL. ([#6026](https://github.com/mapbox/mapbox-gl-native/pull/6026)) +* When creating an MLNShapeSource, you can now specify options for clustering point features within the shape source. Similarly, GeoJSON sources specified by the stylesheet at design time can specify the `cluster`, `clusterMaxZoom`, and `clusterRadius` attributes. ([#5724](https://github.com/mapbox/mapbox-gl-native/pull/5724)) +* Added [quadkey](https://msdn.microsoft.com/en-us/library/bb259689.aspx) support and limited WMS support in raster tile URL templates. ([#5628](https://github.com/mapbox/mapbox-gl-native/pull/5628)) +* When creating an MLNTileSource, you can now specify that the tile URLs use [TMS](https://en.wikipedia.org/wiki/Tile_Map_Service) coordinates by setting `MLNTileSourceOptionTileCoordinateSystem` to `MLNTileCoordinateSystemTMS`. TileJSON files can specify `"scheme": "tms"`. ([#2270](https://github.com/mapbox/mapbox-gl-native/pull/2270)) +* Fixed an issue causing abstract MLNMultiPointFeature objects to be returned in feature query results. Now concrete MLNPointCollectionFeature objects are returned. MLNMultiPointFeature is now an alias of MLNPointCollectionFeature. ([#6742](https://github.com/mapbox/mapbox-gl-native/pull/6742)) +* Fixed rendering artifacts and missing glyphs that occurred after viewing a large number of CJK characters on the map. ([#5908](https://github.com/mapbox/mapbox-gl-native/pull/5908)) +* `-[MLNMapView resetPosition]` now resets to the current style’s default center coordinates, zoom level, direction, and pitch, if specified. ([#6127](https://github.com/mapbox/mapbox-gl-native/pull/6127)) +* Fixed an issue where feature querying sometimes failed to return the expected features when the map was tilted. ([#6773](https://github.com/mapbox/mapbox-gl-native/pull/6773)) +* MLNFeature’s `attributes` and `identifier` properties are now writable. ([#6728](https://github.com/mapbox/mapbox-gl-native/pull/6728)) +* The action sheet that appears when tapping the information button in the bottom-right corner now lists the correct attribution for the current style. ([#5999](https://github.com/mapbox/mapbox-gl-native/pull/5999)) +* Added support for MLNSymbolStyleLayer’s `textPitchAlignment` property and the corresponding style JSON property for improved street label legibility on a tilted map. ([#5288](https://github.com/mapbox/mapbox-gl-native/pull/5288)) +* Added support for MLNSymbolStyleLayer’s `iconTextFit` and `iconTextFitPadding` properties and the corresponding style JSON properties, allowing the background of a shield to automatically resize to fit the shield’s text. ([#5334](https://github.com/mapbox/mapbox-gl-native/pull/5334)) +* Added support for MLNSymbolStyleLayer’s `circlePitchScale` property and the corresponding style JSON property, allowing circle features in a tilted base map to scale or remain the same size as the viewing distance changes. ([#5576](https://github.com/mapbox/mapbox-gl-native/pull/5576)) +* The `identifier` property of an MLNFeature may now be either a number or string. ([#5514](https://github.com/mapbox/mapbox-gl-native/pull/5514)) +* If MLNMapView is unable to obtain or parse a style, it now calls its delegate’s `-mapViewDidFailLoadingMap:withError:` method. ([#6145](https://github.com/mapbox/mapbox-gl-native/pull/6145)) +* Added the `-[MLNMapViewDelegate mapView:didFinishLoadingStyle:]` delegate method, which offers the earliest opportunity to modify the layout or appearance of the current style before the map view is displayed to the user. ([#6636](https://github.com/mapbox/mapbox-gl-native/pull/6636)) +* Fixed crashes that could occur when loading a malformed stylesheet. ([#5736](https://github.com/mapbox/mapbox-gl-native/pull/5736)) +* Fixed an issue causing stepwise zoom functions to be misinterpreted. ([#6328](https://github.com/mapbox/mapbox-gl-native/pull/6328)) +* A source’s tiles are no longer rendered when the map is outside the source’s supported zoom levels. ([#6345](https://github.com/mapbox/mapbox-gl-native/pull/6345)) +* Improved style parsing performance. ([#6170](https://github.com/mapbox/mapbox-gl-native/pull/6170)) +* Improved feature querying performance. ([#6514](https://github.com/mapbox/mapbox-gl-native/pull/6514)) +* Fixed an issue where shapes that cannot currently be visually represented as annotations were still shown on the map as point annotations. ([#6764](https://github.com/mapbox/mapbox-gl-native/issues/6764)) + +### User location + +* The user dot now animates between user locations when user tracking is disabled. ([#6215](https://github.com/mapbox/mapbox-gl-native/pull/6215)) +* To customize the appearance of the user location annotation, subclass the newly added MLNUserLocationAnnotationView class and implement `-[MLNMapViewDelegate mapView:viewForAnnotation:]`. ([#5882](https://github.com/mapbox/mapbox-gl-native/pull/5882)) +* `-[MLNMapView viewForAnnotation:]` now returns the user location annotation view when given the user location annotation. ([#6957](https://github.com/mapbox/mapbox-gl-native/pull/6957)) +* Fixed an issue causing the user dot’s accuracy ring to wobble while zooming in and out. ([#6019](https://github.com/mapbox/mapbox-gl-native/pull/6019)) +* Heading accuracy indicator sizing has been changed to appear more precise. ([#6120](https://github.com/mapbox/mapbox-gl-native/pull/6120)) +* Fixed an issue that caused the map to not update to reflect the centerOffset when the user location was tracked. ([#6216](https://github.com/mapbox/mapbox-gl-native/pull/6216)) + +### Annotations + +* Added new methods to MLNMultiPoint for changing the vertices along a polyline annotation or the exterior of a polygon annotation. ([#6565](https://github.com/mapbox/mapbox-gl-native/pull/6565)) +* Added new APIs to MLNMapView to query for visible annotations. Combined with `-[MLNMapView viewForAnnotation:]`, these APIs can be used to access all visible annotation views. ([#6061](https://github.com/mapbox/mapbox-gl-native/pull/6061)) +* Shape, feature, and annotation classes now conform to NSSecureCoding. ([#6559](https://github.com/mapbox/mapbox-gl-native/pull/6559)) +* Fixed an issue causing offscreen annotation views to be updated even when they were in the reuse queue. ([#5987](https://github.com/mapbox/mapbox-gl-native/pull/5987)) +* Fixed an issue preventing MLNAnnotationView from animating when its coordinate changes. ([#6215](https://github.com/mapbox/mapbox-gl-native/pull/6215)) +* Fixed an issue causing the wrong annotation view to be selected when tapping an annotation view with a center offset applied. ([#5931](https://github.com/mapbox/mapbox-gl-native/pull/5931)) +* Fixed an issue that assigned annotation views to polyline and polygon annotations. ([#5770](https://github.com/mapbox/mapbox-gl-native/pull/5770)) +* Fixed an issue causing the callout view to be dismissed when panning around. ([#6676](https://github.com/mapbox/mapbox-gl-native/pull/6676)) +* Per documentation, the first and last coordinates in an MLNPolygon must be identical in order for the polygon to draw correctly. The same is true for an MLNPolygon’s interior polygon. ([#5514](https://github.com/mapbox/mapbox-gl-native/pull/5514)) +* To make an MLNPolyline or MLNPolygon span the antimeridian, specify coordinates with longitudes greater than 180° or less than −180°. ([#6088](https://github.com/mapbox/mapbox-gl-native/pull/6088)) +* Various method arguments that are represented as C arrays of `CLLocationCoordinate2D` instances have been marked `const` to streamline bridging to Swift. ([#7215](https://github.com/mapbox/mapbox-gl-native/pull/7215)) +* Fixed an issue that caused an annotation view to disappear if it isn’t created using the annotation view reuse queue. ([#6485](https://github.com/mapbox/mapbox-gl-native/pull/6485)) +* Fixed an issue that could reset user-added transformations on annotation views. ([#6166](https://github.com/mapbox/mapbox-gl-native/pull/6166)) +* Improved the performance of relocating a non-view-backed point annotation by changing its `coordinate` property. ([#5385](https://github.com/mapbox/mapbox-gl-native/pull/5385)) +* Fixed an issue that caused an assertion failure if a `MLNShapeCollection` (a GeoJSON GeometryCollection) was created with an empty array of shapes. ([#7632](https://github.com/mapbox/mapbox-gl-native/pull/7632)) +* Improved the precision of annotations at zoom levels greater than 18. ([#5517](https://github.com/mapbox/mapbox-gl-native/pull/5517)) + +### Networking and offline maps + +* Fixed an issue preventing an MLNMapView from loading tiles while an offline pack is downloading. ([#6446](https://github.com/mapbox/mapbox-gl-native/pull/6446)) +* Fixed a crash that could occur when the device is disconnected while downloading an offline pack. ([#6293](https://github.com/mapbox/mapbox-gl-native/pull/6293)) +* Fixed a crash that occurred when encountering a rate-limit error in response to a network request. ([#6223](https://github.com/mapbox/mapbox-gl-native/pull/6223)) +* Fixed an issue causing an MLNOfflinePack’s progress to continue to update after calling `-suspend`. ([#6186](https://github.com/mapbox/mapbox-gl-native/pull/6186)) +* Fixed an issue preventing cached annotation images from displaying while the device is offline. ([#6358](https://github.com/mapbox/mapbox-gl-native/pull/6358)) +* Added support for an `MLNMapboxAPIBaseURL` key in an app's `Info.plist` in order to customize the base URL used for retrieving map data, styles, and other resources. ([#6709](https://github.com/mapbox/mapbox-gl-native/pull/6709)) +* Query parameters are no longer stripped from mapbox: URLs used as resource URLs. ([#6182](https://github.com/mapbox/mapbox-gl-native/pull/6182), [#6432](https://github.com/mapbox/mapbox-gl-native/pull/6432)) +* Database errors are now logged to the console. ([#6291](https://github.com/mapbox/mapbox-gl-native/pull/6291)) + +### Other changes + +* Raster tiles such as those from Mapbox Satellite are now cached, eliminating flashing while panning back and forth. ([#7091](https://github.com/mapbox/mapbox-gl-native/pull/7091)) +* Improved the performance of symbol style layers. ([#7025](https://github.com/mapbox/mapbox-gl-native/pull/7025)) +* As the user zooms in, tiles from lower zoom levels are scaled up until tiles for higher zoom levels are loaded. ([#5143](https://github.com/mapbox/mapbox-gl-native/pull/5143)) +* Notification names and user info keys are now string enumeration values for ease of use in Swift. ([#6794](https://github.com/mapbox/mapbox-gl-native/pull/6794)) +* MLNMapDebugOverdrawVisualizationMask no longer has any effect in Release builds of the SDK. This debug mask has been disabled for performance reasons. ([#5555](https://github.com/mapbox/mapbox-gl-native/pull/5555)) +* Fixed a typo in the documentation for the MLNCompassDirectionFormatter class. ([#5879](https://github.com/mapbox/mapbox-gl-native/pull/5879)) +* The UITapGestureRecognizer on MLNMapView that is used for selecting annotations now fails if a tap does not select an annotation. ([#7246](https://github.com/mapbox/mapbox-gl-native/pull/7246)) +* Fixed issues related to the visibility of sources in viewports less than 512 pixels wide or tall. ([#7438](https://github.com/mapbox/mapbox-gl-native/pull/7438)) + +## 3.3.7 - November 17, 2016 + +* This version is the same as 3.3.6 but it is built with Xcode 8 that produces a smaller binary. Developers using this version in Swift applications built with Xcode 7.3.1 should use the unstripped, `*-symbols` framework. + +## 3.3.6 - November 9, 2016 + +* Fixed a crash that occurred during low-memory situations when multiple instances of MLNMapView were in the view hierarchy. The speculative fix in v3.3.5 has been reverted. ([#6972](https://github.com/mapbox/mapbox-gl-native/pull/6972)) + +## 3.3.5 - November 2, 2016 + +* Speculatively fixed an OpenGL rendering crash. ([#6844](https://github.com/mapbox/mapbox-gl-native/pull/6844)) +* Fixed an issue with symbols not being properly stripped from the dynamic framework. The dSYM file included with the standard dynamic framework in previous releases (e.g., `mapbox-ios-sdk-3.3.4-dynamic.zip` or the `Mapbox-iOS-SDK` pod) could not be used to symbolicate crashes. ([#6531](https://github.com/mapbox/mapbox-gl-native/pull/6531)) +* Simulator architecture slices are included in the included dSYM file, allowing you to symbolicate crashes that occur in the Simulator. ([#5740](https://github.com/mapbox/mapbox-gl-native/pull/5740)) +* Fixed a crash that sometimes occurred when initializing an MLNMapView. ([#5932](https://github.com/mapbox/mapbox-gl-native/pull/5932)) + +## 3.3.4 - August 8, 2016 + +* Fixed an issue that caused the user dot to be selected when tapping an annotation that lies within the user dot’s accuracy circle. First attempt was [#5816](https://github.com/mapbox/mapbox-gl-native/pull/5816) in v3.3.2, which excluded the pulsing halo but not the accuracy circle. ([#5894](https://github.com/mapbox/mapbox-gl-native/pull/5894)) + +## 3.3.3 - July 29, 2016 + +* Fixed an issue where the style zoom levels were not respected when deciding when to render a layer. ([#5811](https://github.com/mapbox/mapbox-gl-native/issues/5811)) + +## 3.3.2 - July 28, 2016 + +* Speculatively fixed a crash that occurred when initializing an MLNMapView on iOS 7.x. ([#5791](https://github.com/mapbox/mapbox-gl-native/pull/5791)) +* View-backed annotations no longer prevent the user from starting to pan the map. ([#5813](https://github.com/mapbox/mapbox-gl-native/pull/5813)) +* Fixed an issue that caused the user dot to be selected when tapping an annotation that lies within the user dot’s accuracy circle. ([#5816](https://github.com/mapbox/mapbox-gl-native/pull/5816)) + +## 3.3.1 - July 19, 2016 + +* Fixed a crash that occurred when a sprite URL lacks a file extension. See [this comment](https://github.com/mapbox/mapbox-gl-native/issues/5722#issuecomment-233701251) to determine who may be affected by this bug. ([#5723](https://github.com/mapbox/mapbox-gl-native/pull/5723)) +* Fixed an issue causing overlapping polylines and polygons to be drawn in undefined z-order. Shapes are always drawn in the order they are added to the map, from the oldest on the bottom to the newest on the top. ([#5710](https://github.com/mapbox/mapbox-gl-native/pull/5710)) +* Fixed an issue preventing MLNMapView from changing its viewport when a single annotation was passed into `-[MLNMapView showAnnotations:animated:]`. ([#5693](https://github.com/mapbox/mapbox-gl-native/pull/5693)) +* Fixed an issue causing polyline and polygon annotations to disappear when the zoom level is one less than the maximum zoom level. ([#5418](https://github.com/mapbox/mapbox-gl-native/pull/5418)) +* Fixed a crash that occurred when a style or other resource URL has a query string. ([#5554](https://github.com/mapbox/mapbox-gl-native/pull/5554)) +* If you subclass MLNAnnotationView, your implementation of `-setSelected:animated:` is now called with the correct value in the `animated` parameter, making it possible to animate a deselection. ([#5677](https://github.com/mapbox/mapbox-gl-native/pull/5677)) +* The compass, Mapbox logo, and attribution button now accommodate the containing map view’s content insets. If your interface elements partially overlap the map view but do not affect the top and bottom layout guides, set the `automaticallyAdjustsScrollViewInsets` property to `NO` and set the `contentInset` property to a suitable value. ([#5671](https://github.com/mapbox/mapbox-gl-native/pull/5671)) +* Added a property to MLNOfflineStorage, `countOfBytesCompleted`, that indicates the disk space occupied by all cached and offline resources. ([#5585](https://github.com/mapbox/mapbox-gl-native/pull/5585)) + +## 3.3.0 - July 14, 2016 + +### Styles and data + +- Added methods to MLNMapView for obtaining the underlying map data rendered by the current style, along with additional classes to represent complex geometry in that data. ([#5110](https://github.com/mapbox/mapbox-gl-native/pull/5110)) +- Improved performance viewing regions with large landcover polygons when viewing a style that uses the Mapbox Streets source. ([#2444](https://github.com/mapbox/mapbox-gl-native/pull/2444)) +- Fixed a memory leak when using raster resources. ([#5141](https://github.com/mapbox/mapbox-gl-native/pull/5141)) +- Rendering now occurs on the main thread, fixing a hang when calling `-[MLNMapView styleURL]` before the map view has fully loaded or while the application is in the background. ([#2909](https://github.com/mapbox/mapbox-gl-native/pull/2909)) +- Added a `-reloadStyle:` action to MLNMapView to force a reload of the current style. ([#4728](https://github.com/mapbox/mapbox-gl-native/pull/4728)) +- A more specific user agent string is now sent with style and tile requests. ([#4012](https://github.com/mapbox/mapbox-gl-native/pull/4012)) +- Added a new option to `MLNMapDebugMaskOptions`, `MLNMapDebugOverdrawVisualizationMask`, that highlights overlapping drawing operations instead of the usual rendered output. ([#5403](https://github.com/mapbox/mapbox-gl-native/pull/5403)) + +### Interactivity + +- The compass, user dot, and visible annotations are now accessible to VoiceOver users. ([#1496](https://github.com/mapbox/mapbox-gl-native/pull/1496)) +- Added a method to MLNMapView, `-anchorPointForGesture:`, that you can override to anchor gestures at a point other than the user location. ([#5302](https://github.com/mapbox/mapbox-gl-native/pull/5302)) +- Added a property to MLNMapView, `decelerationRate`, that allows you to speed up or slow down the drift animation at the end of a user gesture. You can also use this property to disable the drift animation entirely. ([#5504](https://github.com/mapbox/mapbox-gl-native/pull/5504)) +- Improved responsiveness when zooming in then immediately panning around. ([#4595](https://github.com/mapbox/mapbox-gl-native/pull/4595)) +- Added a new method, `-[MLNMapView cameraThatFitsCoordinateBounds:]`, to get a camera that you can pass into `-setCamera:` that fits the given coordinate bounds. ([#4790](https://github.com/mapbox/mapbox-gl-native/pull/4790)) + +### Annotations + +- MLNPointAnnotation and custom MLNAnnotation implementations (but not MLNMultiPoint) can be backed by an MLNAnnotationView instead of an MLNAnnotationImage. MLNAnnotationView is a subclass of UIView, so you can use Core Animation and other familiar technologies with it. To associate an MLNAnnotation with an MLNAnnotationView, implement `-mapView:viewForAnnotation:` in your MLNMapViewDelegate class. ([#4801](https://github.com/mapbox/mapbox-gl-native/pull/4801)) +- An MLNAnnotation can be relocated by changing its `coordinate` property in a KVO-compliant way. An MLNMultiPoint cannot be relocated. ([#3835](https://github.com/mapbox/mapbox-gl-native/pull/3835)) +- Setting the `image` property of an MLNAnnotationImage to `nil` resets it to the default red pin image and reclaims resources that can be used to customize additional annotations. ([#3835](https://github.com/mapbox/mapbox-gl-native/pull/3835)) +- An MLNPolygon can now have interior polygons, representing holes knocked out of the overall shape. ([#5110](https://github.com/mapbox/mapbox-gl-native/pull/5110)) + +### User location + +- The user dot now moves smoothly between user location updates while user location tracking is disabled. ([#1582](https://github.com/mapbox/mapbox-gl-native/pull/1582)) +- Fixed an issue preventing KVO change notifications from being generated on MLNMapView’s `userTrackingMode` key path when `-setUserTrackingMode:animated:` is called. ([#4724](https://github.com/mapbox/mapbox-gl-native/pull/4724)) +- Fixed a crash setting MLNMapView’s `userLocationVerticalAlignment` property before a user location update has occurred. ([#5278](https://github.com/mapbox/mapbox-gl-native/pull/5278)) +- Mapbox Telemetry is automatically disabled while the host application is running in the iOS Simulator. ([#4726](https://github.com/mapbox/mapbox-gl-native/pull/4726)) + +### Offline maps + +- `MLNOfflinePackProgress` now indicates how many tiles have been downloaded and how much space they take up. ([#4874](https://github.com/mapbox/mapbox-gl-native/pull/4874)) +- Fixed an issue where the tile cache could be included in iCloud backups on the first launch. ([#5124](https://github.com/mapbox/mapbox-gl-native/pull/5124), [#5601](https://github.com/mapbox/mapbox-gl-native/pull/5601)) +- Suppressed “Unable to make space for entry” console spew. ([#4708](https://github.com/mapbox/mapbox-gl-native/pull/4708)) +- Deprecated `-[MLNMapView emptyMemoryCache]`. ([#4725](https://github.com/mapbox/mapbox-gl-native/pull/4725)) + +### Packaging + +- Improved the design of the generated API documentation. ([#5306](https://github.com/mapbox/mapbox-gl-native/pull/5306)) +- Applications linking against the SDK static framework no longer need to add `-ObjC` to the Other Linker Flags (`OTHER_LDFLAGS`) build setting. If you previously added this flag solely for this SDK, removing the flag may potentially reduce the overall size of your application. ([#4641](https://github.com/mapbox/mapbox-gl-native/pull/4641)) +- Removed the `armv7s` slice from the SDK to reduce its size. iPhone 5 and iPhone 5c automatically use the `armv7` slice instead. ([#4641](https://github.com/mapbox/mapbox-gl-native/pull/4641)) +- The SDK is now localizable. No localizations are currently provided, other than English, but if you need a particular localization, you can install the SDK manually and drop a .lproj folder into the framework. ([#4783](https://github.com/mapbox/mapbox-gl-native/pull/4783)) +- Removed unused SVG files from the SDK’s resource bundle. ([#4641](https://github.com/mapbox/mapbox-gl-native/pull/4641)) + +### Other changes + +- Added category methods on NSValue for converting to and from the structure types defined in MLNGeometry.h. ([#4802](https://github.com/mapbox/mapbox-gl-native/pull/4802)) +- Added NSFormatter subclasses for converting geographic coordinates and directions into display strings. ([#4802](https://github.com/mapbox/mapbox-gl-native/pull/4802)) +- Added `MLNCoordinateInCoordinateBounds()`, a function that tests whether or not a coordinate is in a given bounds. ([#5053](https://github.com/mapbox/mapbox-gl-native/pull/5053)) + +## 3.2.3 - June 7, 2016 + +- Fixed an issue preventing `-[MLNMapViewDelegate mapViewDidFinishLoadingMap:]` from being called when returning to the view controller containing the map view from another view controller. ([#5164](https://github.com/mapbox/mapbox-gl-native/pull/5164)) +- Declarations in the API documentation are shown in both Objective-C and Swift. ([realm/jazzy#530](https://github.com/realm/jazzy/pull/530)) + +## 3.2.2 - May 10, 2016 + +- Existing MLNStyle class methods that return default style URLs have been deprecated in favor of new methods that require an explicit style version parameter. The deprecated, unversioned methods continue to return version 8 of the respective styles and will not be updated as new versions of the styles are released. ([#4759](https://github.com/mapbox/mapbox-gl-native/pull/4759)) +- Deprecated `+[MLNStyle emeraldStyleURL]` with no replacement method. To use the Emerald style going forward, we recommend that you use the underlying URL. ([#4759](https://github.com/mapbox/mapbox-gl-native/pull/4759)) +- Added `+[MLNStyle outdoorsStyleURLWithVersion:]` for the new Outdoors style. ([#4759](https://github.com/mapbox/mapbox-gl-native/pull/4759)) +- The Hybrid style is now called Satellite Streets. ([#4759](https://github.com/mapbox/mapbox-gl-native/pull/4759)) + +## 3.2.1 - April 20, 2016 + +- Fixed a hang that could occur if the host application attempts to set user defaults on a background queue. ([#4745](https://github.com/mapbox/mapbox-gl-native/pull/4745)) +- User location heading updates now resume properly when an app becomes active again. ([#4674](https://github.com/mapbox/mapbox-gl-native/pull/4674)) +- Fixed an issue causing hyperlinks in the documentation to be displayed as raw Markdown syntax when viewed in Xcode’s Quick Help popover or sidebar. ([#4760](https://github.com/mapbox/mapbox-gl-native/pull/4760)) + +## 3.2.0 - April 5, 2016 + +- If you’ve previously installed the SDK as a static framework, the installation workflow has changed to address issues when submitting your application to the App Store or installing it on a device. Upon upgrading to this version of the SDK, you’ll need to add Mapbox.bundle to the Copy Bundle Resources build phase and remove Mapbox.framework from the Embed Frameworks build phase. ([#4455](https://github.com/mapbox/mapbox-gl-native/pull/4455)) +- Offline packs can now be downloaded to allow users to view specific regions of the map offline. A new MLNOfflineStorage class provides APIs for managing MLNOfflinePacks. ([#4221](https://github.com/mapbox/mapbox-gl-native/pull/4221)) +- Tiles and other resources are cached in the same file that holds offline resources. The combined cache file is located in a subdirectory of the user’s Application Support directory, which means iOS will not delete the file when disk space runs low. ([#4377](https://github.com/mapbox/mapbox-gl-native/pull/4377)) +- Fixed an issue where the map view’s center would always be calculated as if the view occupied the entire screen. ([#4504](https://github.com/mapbox/mapbox-gl-native/issues/4504)) +- The user dot no longer disappears after panning the map across the antimeridian at low zoom levels. ([#4275](https://github.com/mapbox/mapbox-gl-native/pull/4275)) +- The map no longer recoils when panning quickly at low zoom levels. ([#4214](https://github.com/mapbox/mapbox-gl-native/pull/4214)) +- Fixed an issue causing the map to pan the wrong way when the user pinches unevenly. ([#4427](https://github.com/mapbox/mapbox-gl-native/pull/4427)) +- The maximum zoom level is capped at 21 due to rendering issues at higher zoom levels. ([#4417](https://github.com/mapbox/mapbox-gl-native/pull/4417)) +- An icon laid out along a line no longer appears if it would extend past the end of the line. Some one-way arrows no longer point the wrong way. ([#3839](https://github.com/mapbox/mapbox-gl-native/pull/3839)) +- Fixed warping of dashed lines near sharp corners. ([#3914](https://github.com/mapbox/mapbox-gl-native/pull/3914)) +- Telemetry location gathering now occurs only when the device is in motion. ([#4115](https://github.com/mapbox/mapbox-gl-native/pull/4115)) +- An account’s monthly active users metric only counts a user once a map view is displayed to that user. ([#3713](https://github.com/mapbox/mapbox-gl-native/pull/3713)) +- A .dSYM bundle is included with the dynamic framework to facilitate symbolication of crash logs. +- Updated documentation to reflect the requirement that you must embed the dynamic framework in the “Embedded Binaries” section in Xcode. ([#4011](https://github.com/mapbox/mapbox-gl-native/issues/4011)) +- Polygons and polylines now default to using the map view’s tint color. ([#4028](https://github.com/mapbox/mapbox-gl-native/pull/4028)) +- The user dot no longer lags when panning the map. ([#3683](https://github.com/mapbox/mapbox-gl-native/pull/3683)) +- The Improve This Map tool now uses the same zoom level that is currently being shown in the map view. ([#4068](https://github.com/mapbox/mapbox-gl-native/pull/4068)) +- Fixed a formatting issue in the documentation for `MLNCoordinateBoundsIsEmpty()`. ([#3958](https://github.com/mapbox/mapbox-gl-native/pull/3958)) + +## 3.1.2 - February 22, 2016 + +- You can once again install the static framework without manually linking several framework and library dependencies. ([#4029](https://github.com/mapbox/mapbox-gl-native/pull/4029)) +- The location manager used by MLNMapView to show the user’s location is now paused when the application is sent to the background. ([#4034](https://github.com/mapbox/mapbox-gl-native/pull/4034)) + +## 3.1.1 - February 15, 2016 + +- Corrected the dynamic framework’s minimum deployment target to iOS 8.0. ([#3872](https://github.com/mapbox/mapbox-gl-native/pull/3872)) +- Fixed Fabric compatibility. ([#3847](https://github.com/mapbox/mapbox-gl-native/pull/3847)) +- Fixed a crash that can occur when reselecting an annotation. ([#3881](https://github.com/mapbox/mapbox-gl-native/pull/3881)) +- Fixed an issue preventing the Latitude inspectable from working when it is set before setting the Zoom Level inspectable in Interface Builder. ([#3886](https://github.com/mapbox/mapbox-gl-native/pull/3886)) +- Fixed an issue that incorrectly expanded the tappable area of an annotation and prevented the annotation’s alignment rect insets from having any effect on the tappable area. ([#3898](https://github.com/mapbox/mapbox-gl-native/pull/3898)) +- Fixed an issue preventing `-[MLNMapViewDelegate mapView:tapOnCalloutForAnnotation:]` from being called when a non-custom callout view is tapped. ([#3875](https://github.com/mapbox/mapbox-gl-native/pull/3875)) + +## 3.1.0 - February 5, 2016 + +- The SDK is now distributed as a dynamic framework instead of a static library, resulting in a simpler installation workflow and significantly reduced download size. The framework contains both simulator and device content. If you install the dynamic framework manually, you’ll need to strip out the simulator content before submitting your application to the App Store due to [an Xcode bug](http://www.openradar.me/radar?id=6409498411401216); see the installation instructions included with the framework for details. ([#3183](https://github.com/mapbox/mapbox-gl-native/pull/3183)) +- Fixed an issue causing the entire MLNMapView to leak. ([#3448](https://github.com/mapbox/mapbox-gl-native/pull/3448)) +- `MLNMapView` methods that alter the viewport now accept optional completion handlers. ([#3090](https://github.com/mapbox/mapbox-gl-native/pull/3090)) +- You can now modify an annotation’s image after adding the annotation to the map. ([#3146](https://github.com/mapbox/mapbox-gl-native/pull/3146)) +- Tapping now selects annotations more reliably. Tapping near the top of a large annotation image now selects that annotation. An annotation image’s alignment insets influence how far away the user can tap and still select the annotation. For example, if your annotation image has a large shadow, you can keep that shadow from being tappable by excluding it from the image’s alignment rect. ([#3261](https://github.com/mapbox/mapbox-gl-native/pull/3261)) +- Annotations remain visible after switching to a different style. ([#3049](https://github.com/mapbox/mapbox-gl-native/pull/3049)) +- The minimum and maximum zoom levels can now be configured using the `minimumZoomLevel` and `maximumZoomLevel` properties, respectively. The map is no longer limited to zoom level 18: by default, the maximum zoom level is now 20, allowing for a more detailed map in urban areas. ([#3712](https://github.com/mapbox/mapbox-gl-native/pull/3712)) +- A new method on MLNMapView, `-flyToCamera:withDuration:completionHandler:`, lets you transition between viewpoints along an arc as if by aircraft. ([#3171](https://github.com/mapbox/mapbox-gl-native/pull/3171), [#3301](https://github.com/mapbox/mapbox-gl-native/pull/3301)) +- MLNMapCamera’s `altitude` values now match those of MKMapCamera. ([#3362](https://github.com/mapbox/mapbox-gl-native/pull/3362)) +- MLNMapView properties like `centerCoordinate` and `camera` now offset the center to account for any translucent top or bottom bar. As a result, when user tracking is enabled and the map view is an immediate child of a view controller, the user dot is centered in the unobscured portion of the map view. To override this offset, modify the `contentInset` property; you may also need to set the containing view controller’s `automaticallyAdjustsScrollViewInsets` property to `NO`. ([#3583](https://github.com/mapbox/mapbox-gl-native/pull/3583)) +- In user tracking mode, the user dot stays in a fixed position within MLNMapView while the map pans smoothly. A new property, `userLocationVerticalAlignment`, determines the user dot’s fixed position. ([#3589](https://github.com/mapbox/mapbox-gl-native/pull/3589)) +- When the user tracking mode is set to `MLNUserTrackingModeFollowWithCourse`, an optional `targetCoordinate` is kept within sight at all times as the user changes location. This property, in conjunction with the `userLocationVerticalAlignment` property, may be useful for displaying the user’s progress toward a waypoint. ([#3680](https://github.com/mapbox/mapbox-gl-native/pull/3680)) +- Heading or course tracking mode can now be enabled as soon as an MLNMapView is initialized. ([#3680](https://github.com/mapbox/mapbox-gl-native/pull/3680)) +- Zooming and rotation gestures no longer disable user tracking mode. ([#3589](https://github.com/mapbox/mapbox-gl-native/pull/3589)) +- User tracking mode starts out at a lower zoom level by default. ([#3589](https://github.com/mapbox/mapbox-gl-native/pull/3589)) +- Fixed an issue with small map views not properly fitting annotations within bounds. ([#3407](https://github.com/mapbox/mapbox-gl-native/pull/3407)) +- When the user rotates the map to within 7° of true north, the map view now snaps to true north. ([#3403](https://github.com/mapbox/mapbox-gl-native/pull/3403)) +- The map view’s background can now be transparent or translucent, as long as the style’s background layer is transparent or translucent and `MLNMapView.opaque` is set to `NO`. ([#3096](https://github.com/mapbox/mapbox-gl-native/pull/3096)) +- Documentation is now generated by [jazzy](https://github.com/realm/jazzy) instead of appledoc. ♪♫ ([#3203](https://github.com/mapbox/mapbox-gl-native/pull/3203)) +- New API to provide a custom callout view to the map for annotations. ([#3456](https://github.com/mapbox/mapbox-gl-native/pull/3456)) +- Made telemetry on/off setting available in-app. ([#3445](https://github.com/mapbox/mapbox-gl-native/pull/3445)) +- Fixed an issue with users not being counted by Mapbox if they had disabled telemetry. ([#3495](https://github.com/mapbox/mapbox-gl-native/pull/3495)) +- Fixed crash caused by MLNAnnotationImage with non-integer width or height ([#2198](https://github.com/mapbox/mapbox-gl-native/issues/2198)) +- Fixed “include of non-modular header” errors in Swift projects managed by CocoaPods. ([#3679](https://github.com/mapbox/mapbox-gl-native/pull/3679)) +- Avoids triggering the blue background location status bar when user has granted "when in use" permission. ([#3671](https://github.com/mapbox/mapbox-gl-native/issues/3671)) +- Deprecated the `debugActive` property and `-toggleDebug` method on MLNMapView in favor of a new `debugMask` property that exposes individual style debugging options. ([#3742](https://github.com/mapbox/mapbox-gl-native/pull/3742)) + +## 3.0.1 - December 7, 2015 + +- Fixed CoreTelephony.framework crash. ([#3170](https://github.com/mapbox/mapbox-gl-native/pull/3170)) +- Fixed an issue preventing the compass from responding to taps after the compass is moved programmatically. ([#3117](https://github.com/mapbox/mapbox-gl-native/pull/3117)) +- CocoaPods is now distributed via a (static) framework. ([#3181](https://github.com/mapbox/mapbox-gl-native/issues/3181)) + +## 3.0.0 - November 23, 2015 + +- If you install this SDK via CocoaPods, CocoaPods version 0.38.0 or above is required. ([#2132](https://github.com/mapbox/mapbox-gl-native/pull/2132)) +- The `styleID` property has been removed from MLNMapView. Instead, set the `styleURL` property to an NSURL in the form `mapbox://styles/STYLE_ID`. If you previously set the style ID in Interface Builder’s Attributes inspector, delete the `styleID` entry from the User Defined Runtime Attributes section of the Identity inspector, then set the new “Style URL” inspectable to a value in the form `mapbox://styles/STYLE_ID`. ([#2632](https://github.com/mapbox/mapbox-gl-native/pull/2632)) +- Default styles such as Streets are no longer bundled with the SDK; instead, they are loaded at runtime from the style API on mapbox.com. As always, you can use these default styles with any valid access token, and Streets continues to be `MLNMapView`’s initial style. The `bundledStyleURLs` property on `MLNMapView` has been deprecated in favor of several class methods on `MLNStyle` that provide direct access to the default styles. ([#2746](https://github.com/mapbox/mapbox-gl-native/pull/2746)) +- The SDK now builds with Bitcode enabled. A version of libMapbox.a with Bitcode disabled is also available. ([#2332](https://github.com/mapbox/mapbox-gl-native/issues/2332), [#3003](https://github.com/mapbox/mapbox-gl-native/pull/3003)) +- The style URL can be set to a local resource: `asset://local-color.json` and `local-color.json` both resolve to a file named `local-color.json` in the application’s root folder. ([#3087](https://github.com/mapbox/mapbox-gl-native/pull/3087)) +- The double-tap-drag gesture for zooming in and out is now consistent with the Google Maps SDK. ([#2153](https://github.com/mapbox/mapbox-gl-native/pull/2153)) +- A new `MLNAnnotationImage.enabled` property allows you to disable touch events on individual annotations. ([#2501](https://github.com/mapbox/mapbox-gl-native/pull/2501)) +- Fixed a rendering issue that caused one-way arrows along tile boundaries to point due east instead of in the direction of travel. ([#2530](https://github.com/mapbox/mapbox-gl-native/pull/2530)) +- Fixed an issue that prevented zoom level–dependent style properties from updating after zooming programmatically with animation. ([#2951](https://github.com/mapbox/mapbox-gl-native/pull/2951)) +- Performance and appearance improvements during annotation adds & removes. ([#1688](https://github.com/mapbox/mapbox-gl-native/issues/1688)) +- Overall improved performance during renders by not rendering faster than necessary. ([#1975](https://github.com/mapbox/mapbox-gl-native/issues/1975)) +- Fixed a rendering issue with styles that use the `background-pattern` property. ([#2531](https://github.com/mapbox/mapbox-gl-native/pull/2531)) +- Fixed a crash when reusing a single `MLNMapView` across multiple `UIViewController`s. ([#2969](https://github.com/mapbox/mapbox-gl-native/pull/2969)) +- Fixed a crash on iPod touch and other devices or simulators without a cell carrier. ([#2687](https://github.com/mapbox/mapbox-gl-native/issues/2687)) +- Eliminated flickering when opening and closing an overlay, such as an alert or action sheet. ([#2309](https://github.com/mapbox/mapbox-gl-native/pull/2309)) +- Labels can now line wrap on hyphens and other punctuation. ([#2598](https://github.com/mapbox/mapbox-gl-native/pull/2598)) +- A new delegate callback was added for observing taps to annotation callout views. ([#2596](https://github.com/mapbox/mapbox-gl-native/pull/2596)) +- `-mapViewRegionIsChanging:` is now sent to the map view’s delegate during gestures. ([#2700](https://github.com/mapbox/mapbox-gl-native/pull/2700)) +- Improved gesture recognition while the map is tilted. ([#2770](https://github.com/mapbox/mapbox-gl-native/pull/2770)) +- `-mapViewWillStartLoadingMap:` and `-mapViewDidFinishLoadingMap:` delegate methods now work. ([#2706](https://github.com/mapbox/mapbox-gl-native/pull/2706)) +- Removed CoreTelephony.framework dependency. ([#2581](https://github.com/mapbox/mapbox-gl-native/pull/2581)) +- Improved user location annotation responsiveness. ([#2643](https://github.com/mapbox/mapbox-gl-native/pull/2643)) + +## 2.1.2 - September 15, 2015 + +- Built with Xcode 6.4 to not yet trigger Bitcode compatibility until Xcode 7 stabilizes. ([#2332](https://github.com/mapbox/mapbox-gl-native/issues/2332)) + +## 2.1.1 - September 15, 2015 + +- Fixes for Xcode 7 and Bitcode. ([#2238](https://github.com/mapbox/mapbox-gl-native/pull/2238)) + +## 2.1.0 - September 14, 2015 + +- A two-finger vertical swipe now tilts the map into perspective mode. ([#2116](https://github.com/mapbox/mapbox-gl-native/pull/2116)) +- A new `MLNMapCamera` API allows you to transition multiple viewpoint properties, including rotation and pitch, simultaneously with an optional custom duration and timing function. ([#2193](https://github.com/mapbox/mapbox-gl-native/pull/2193)) +- A new user tracking mode, `MLNUserTrackingModeFollowWithCourse`, has been added for indicating the current direction of travel. ([#2068](https://github.com/mapbox/mapbox-gl-native/pull/2068)) +- Version 8 (`v8`) of the [Mapbox GL style spec](https://maplibre.org/maplibre-style-spec/) is now required. If you are using a custom `v7` style, it needs to be upgraded using [this migrator script](https://github.com/mapbox/mapbox-gl-style-spec/blob/mb-pages/migrations/v7.js). ([#2052](https://github.com/mapbox/mapbox-gl-native/pull/2052)) +- Applications built with Mapbox GL no longer crash when Location Services launches them in background mode. ([#1821](https://github.com/mapbox/mapbox-gl-native/pull/1821), [#1869](https://github.com/mapbox/mapbox-gl-native/pull/1869)) +- Fixed a crash when adding annotations to an `MLNMapView` inside `-viewDidLoad`. ([#1874](https://github.com/mapbox/mapbox-gl-native/pull/1874)) +- The user location annotation view now indicates the location reading’s accuracy and the device’s heading. ([#2010](https://github.com/mapbox/mapbox-gl-native/pull/2010)) +- Eliminated linker warnings and errors when building against the iOS 9.0 SDK in Xcode 7. ([#1962](https://github.com/mapbox/mapbox-gl-native/pull/1962)) +- Worked around a bug in the iOS 9.0 SDK that caused a crash on launch. ([#1958](https://github.com/mapbox/mapbox-gl-native/pull/1958)) +- User location tracking no longer sends `MLNMapView` into an invalid region on iOS 9. ([#1925](https://github.com/mapbox/mapbox-gl-native/pull/1925)) +- Eliminated console spew in the iOS demo application that was related to Mapbox Metrics HTTP requests. ([#1937](https://github.com/mapbox/mapbox-gl-native/issues/1937)) +- Implemented `-[MLNMapView showAnnotations:animated:]`. ([#2050](https://github.com/mapbox/mapbox-gl-native/pull/2050)) +- Fixed a crash adding a shape annotation with zero points. ([#2098](https://github.com/mapbox/mapbox-gl-native/pull/2098)) +- Debug mode now displays information useful for debugging the label collision algorithm. ([#1808](https://github.com/mapbox/mapbox-gl-native/pull/1808)) +- Minor style updates. ([#1910](https://github.com/mapbox/mapbox-gl-native/pull/1910)) +- The CocoaPods pod now contains a `README.md` file. ([#1886](https://github.com/mapbox/mapbox-gl-native/pull/1886)) + +## 2.0.0 - August 21, 2015 + +Repackaging 2.0.0-pre.1 as it contained no issues. + +## 2.0.0-pre.1 - August 21, 2015 + +Repackaging 0.5.1 as the Mapbox iOS SDK 2.0.0 series. + +## 0.5.1 - July 13, 2015 + +### iOS + +- Added support for CocoaPods 0.38.0. ([#1876](https://github.com/mapbox/mapbox-gl-native/pull/1876)) + +## 0.5.0 - July 9, 2015 + +### Core + +- Support for runtime marker imagery. ([#941](https://github.com/mapbox/mapbox-gl-native/pull/941)) +- Added `Map::fitBounds()` for region-based viewport setting. ([#1092](https://github.com/mapbox/mapbox-gl-native/issues/1092)) +- Added a raster satellite bundled style and improved raster rendering. ([#963](https://github.com/mapbox/mapbox-gl-native/issues/963)) +- Improved round line joins for semi-transparent lines. ([#1839](https://github.com/mapbox/mapbox-gl-native/pull/1839)) +- Improved map render lifecycle notifications. ([#1026](https://github.com/mapbox/mapbox-gl-native/issues/1026)) +- Fixed a bug that caused annotations not to show at zoom level zero. ([#1279](https://github.com/mapbox/mapbox-gl-native/issues/1279)) +- Fixed a bug with the ordering of shape layers. ([#1866](https://github.com/mapbox/mapbox-gl-native/pull/1866)) +- Other bug fixes and performance improvements. + +### iOS + +- **Breaking:** Headers now make use of lightweight generics, eliminating many unnecessary casts when working with annotations in Swift 2.0 in Xcode 7. ([#1711](https://github.com/mapbox/mapbox-gl-native/pull/1711)) +- **Breaking:** `-mapView:symbolNameForAnnotation:` has been removed from the `MLNMapViewDelegate` protocol. Implement `-mapView:imageForAnnotation:` instead, which accepts images at runtime. ([#941](https://github.com/mapbox/mapbox-gl-native/pull/941)) +- **Breaking:** `MLNMapView.direction` is now expressed in terms of degrees clockwise from true north, as indicated in the documentation, rather than counterclockwise. ([#1789](https://github.com/mapbox/mapbox-gl-native/pull/1789)) +- A Satellite style showing Mapbox Satellite imagery is now bundled with Mapbox GL. ([#1845](https://github.com/mapbox/mapbox-gl-native/pull/1845)) +- Improved `UIView` tracking to the map. ([#1813](https://github.com/mapbox/mapbox-gl-native/pull/1813)) +- Delegate method `-[MLNMapViewDelegate mapView:didFailToLocateUserWithError:]` now works. ([#1608](https://github.com/mapbox/mapbox-gl-native/pull/1608)) +- It is now possible to fit the map’s viewport to a coordinate bounding box via `-[MLNMapView setVisibleCoordinateBounds:animated:]` or to a specific set of coordinates via `-[MLNMapView setVisibleCoordinates:count:edgePadding:animated:]`. ([#1783](https://github.com/mapbox/mapbox-gl-native/pull/1783), [#1795](https://github.com/mapbox/mapbox-gl-native/pull/1795)) +- The logo and ℹ️ no longer disappear or get distorted after embedding MLNMapView in a different view, and you can now access these subviews directly via properties on MLNMapView. ([#1779](https://github.com/mapbox/mapbox-gl-native/pull/1779), [#1815](https://github.com/mapbox/mapbox-gl-native/pull/1815)) +- Raster tiles now look sharper midway between two zoom levels. ([#1843](https://github.com/mapbox/mapbox-gl-native/pull/1843)) +- Resetting the map rotation to north no longer also resets the user location tracking mode. ([#1809](https://github.com/mapbox/mapbox-gl-native/pull/1809)) +- `-[MLNMapView convertPoint:toCoordinateFromView:]` now returns accurate coordinates on iPhone 6. ([#1827](https://github.com/mapbox/mapbox-gl-native/pull/1827)) +- Fixed an issue in which `-[MLNMapView direction]` would sometimes return 360 instead of 0. ([#1829](https://github.com/mapbox/mapbox-gl-native/pull/1829)) +- Build against iOS 8.4. ([#1868](https://github.com/mapbox/mapbox-gl-native/pull/1868)) + +## 0.4.0 - June 19, 2015 + +### Core + +- Support for polyline and polygon shape annotations. ([#1655](https://github.com/mapbox/mapbox-gl-native/issues/1655)) +- Improved placement and density of labels. ([#1666](https://github.com/mapbox/mapbox-gl-native/issues/1666), [blog](https://www.mapbox.com/blog/better-label-placement-mapbox-mobile/)) +- Improved z-ordering appearance of point markers. ([#988](https://github.com/mapbox/mapbox-gl-native/issues/988)) +- Fixed an issue in which certain features, such as roundabouts, were not rendered completely. ([#1725](https://github.com/mapbox/mapbox-gl-native/issues/1725)) +- Many bug fixes and performance and stability improvements. +- Improved tests. + +### iOS + +- **Breaking:** `MLNMapView` no longer manages Mapbox access tokens directly; an access token cannot be passed in when initializing the map view. Instead, set `MLNMapboxAccessToken` to your access token in your app’s `Info.plist` file, or call `+[MLNAccountManager setAccessToken:]` before initializing the map view. If you were setting the access token inside an Interface Builder inspectable, also remove it from the User Defined Runtime Attributes section of the Identity inspector. ([#1553](https://github.com/mapbox/mapbox-gl-native/issues/1553)) +- **Breaking:** `MLNAccountManager`'s `-setMapboxMetricsEnabledSettingShownInApp:` has been removed. If you implement a Mapbox Metrics switch inside your app, instead of inside a Settings bundle, set `MLNMapboxMetricsEnabledSettingShownInApp` to `YES` in the `Info.plist` file. ([#1553](https://github.com/mapbox/mapbox-gl-native/issues/1553)) +- **Breaking:** `MLNMapView`'s `-mapID` has been renamed to `-styleID`. ([#1561](https://github.com/mapbox/mapbox-gl-native/issues/1561)) +- Headers have been audited for nullability, improving type safety in both Objective-C and Swift 1.2 when compiling with Xcode 6.3 or above. ([#1578](https://github.com/mapbox/mapbox-gl-native/issues/1578)) +- Fixed an issue in which the map would sometimes spin 180° while rotating the map with two fingers. ([#1453](https://github.com/mapbox/mapbox-gl-native/issues/1453)) +- Added a shortcut to the Mapbox Metrics switch in `MLNMapView`'s action sheet that is attached to the ℹ️ button. ([#1611](https://github.com/mapbox/mapbox-gl-native/issues/1611)) +- `MLNMapView` now supports Interface Builder designables. When you add an `MLNMapView` to a storyboard, it displays instructions for getting set up directly on the storyboard canvas. ([#1573](https://github.com/mapbox/mapbox-gl-native/issues/1573)) +- The default title for the user location annotation is now “You Are Here”. You can customize the title by setting `mapView.userAnnotation.title`. ([#1559](https://github.com/mapbox/mapbox-gl-native/issues/1559)) +- Internal use of the Reachability library has been cleaned up so that your app can include its own copy of Reachability. ([#1718](https://github.com/mapbox/mapbox-gl-native/issues/1718)) +- Now distribute a binary stripped of debugging symbols by default with an optional, secondary symbols build. ([#1650](https://github.com/mapbox/mapbox-gl-native/issues/1650)) + +## 0.3.1 - May 15, 2015 + +- Temporarily removed `IBDesignable` support on iOS. + +## 0.3.0 - May 14, 2015 + +- Initial iOS beta release. + +Known issues: + +- None. diff --git a/platform/ios/CMakeLists.txt b/platform/ios/CMakeLists.txt deleted file mode 100644 index 8b137a76e..000000000 --- a/platform/ios/CMakeLists.txt +++ /dev/null @@ -1,6 +0,0 @@ -cmake_minimum_required(VERSION 3.19) - -project (mbgl) -enable_testing() - -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../../ ${CMAKE_CURRENT_BINARY_DIR}/mapbox-gl-native ) diff --git a/platform/ios/CONTRIBUTING.md b/platform/ios/CONTRIBUTING.md index bd75a222c..5ff878b1f 100644 --- a/platform/ios/CONTRIBUTING.md +++ b/platform/ios/CONTRIBUTING.md @@ -1,10 +1,12 @@ -# Contributing +# Contributing to MapLibre Native for iOS + +This document explains how to build MapLibre Native for iOS from source. It is intended for advanced developers who wish to contribute to the library. If you have a usage question for a product built on MapLibre Native (such as our iOS or Android SDKs), please create a discussion thread on [GitHub Discussions](https://github.com/maplibre/maplibre-native/discussions/categories/q-a). If you want to contribute code: -1. Please familiarize yourself with the [install process](./INSTALL.md). +1. Please familiarize yourself with the [install process](INSTALL.md). 1. Ensure that existing [pull requests](https://github.com/maplibre/maplibre-native/pulls?q=is%3Aopen+is%3Apr+label%3AiOS) and [issues](https://github.com/maplibre/maplibre-native/issues?q=is%3Aopen+is%3Aissue+label%3AiOS) don’t already cover your contribution or question. @@ -12,4 +14,239 @@ If you want to contribute code: 3. Prefix your commit messages with the platform(s) your changes affect: `[ios]` or `[macos]`. -Please note the special instructions for contributing new source code files, asset files, or user-facing strings to the [iOS SDK](platform/ios/DEVELOPING.md#contributing) or [macOS SDK](platform/macos/DEVELOPING.md#contributing). +## Requirements + +See the "Requirements" section in [INSTALL.md](INSTALL.md). + +## Building the SDK + +Create and open an Xcode workspace that includes both the SDK source and some Objective-C test applications by running: + +```bash +# make and open the Xcode workspace +make iproj + +# make Xcode workspace, but run in headless mode +make iproj CI=1 + +# Make Frameworks +make xcframework BUILDTYPE=Release +``` + +### Xcode schemes + +Before building, use the scheme picker button in the toolbar to change the scheme to **iosapp** and the destination to one of the simulators or connected devices listed in the menu. + +**iosapp** is only one of several shared schemes. Others include: + +* **dynamic** builds the SDK as a dynamic framework. +* **static** builds the SDK as a static library and separate resource bundle. +* **dynamic+static** is a combination of the **dynamic** and **static** schemes. +* **CI** builds exactly what gets built by our continuous integration service. +* **bench** is a simple benchmarking application. For more consistent results between runs, run `platform/ios/benchmark/assets/{glyphs,tiles}/download.sh` to download any necessary resources. + +If you don’t have an Apple Developer account, change the destination to a simulator before you build and run the app. + +### Packaging builds + +Install [jazzy](https://github.com/realm/jazzy) for generating API documentation: + +```bash +[sudo] gem install jazzy +``` + +Build and package the SDK by using the `make iframework` command. You can customize the build output by passing the following arguments into the `make` invocation: + +* `BUILDTYPE=Release` will optimize for distribution. Defaults to `Debug`. +* `BUILD_DEVICE=false` builds only for the iOS Simulator. +* `FORMAT=dynamic` builds only a dynamic framework. `FORMAT=static` builds only a static framework, for legacy compatibility. +* `SYMBOLS=NO` strips the build output of debug symbols. Defaults to `YES`. + +An example command that creates a dynamic framework suitable for eventual App Store distribution: + +```bash +make iframework BUILDTYPE=Release +``` + +The products of these build commands can be found in the `build/ios/pkg` folder at the base of the repository. + +## Documentation + +We are moving away from the legacy Jazzy documentation towards Apple's documentation generator [DocC](https://developer.apple.com/documentation/docc). DocC has great Xcode intergration. See the [open issues](https://github.com/maplibre/maplibre-native/issues?q=is%3Aissue+is%3Aopen+label%3Aios+label%3Adocumentation) if you want to help. + +- For a general introduction to DocC, including for example a demonstration of the custom Markdown that DocC uses that allows for cross-linking, see this WWDC video: https://developer.apple.com/videos/play/wwdc2021/10166/ +- For instructions of how to write a tutorial in DooC format: https://developer.apple.com/documentation/docc/building-an-interactive-tutorial +- For instructions of how to write supplemental documentation: https://www.swift.org/documentation/docc/adding-supplemental-content-to-a-documentation-catalog + +The most convenient way to generate the DocC based documentation locally is using Xcode by going to Product > Build Documentation. A new window will pop up ([screenshot](https://user-images.githubusercontent.com/649392/219097391-710a8421-df82-4b5e-864f-e3317cea0b8e.png)). + +### Jazzy Documentation + +The code samples in the header files & [iOS API Documentation](https://maplibre.org/maplibre-native/ios/api/) are generated by a unit test. + +An example of auto generated documentation is the unit test +[MLNDocumentationExampleTests.swift](../darwin/test/MLNDocumentationExampleTests.swift) +which generates styling examples in the `.h` file for styling either a +[Circle](https://maplibre.org/maplibre-native/ios/api/Classes/MLNCircleStyleLayer.html), +[Heatmap](https://maplibre.org/maplibre-native/ios/api/Classes/MLNHeatmapStyleLayer.html), or +[Line](https://maplibre.org/maplibre-native/ios/api/Classes/MLNLineStyleLayer.html). For more details see [Adding a code example](DEVELOPING.md#adding-a-code-example). + +Use `make` to update API documentation: + +```bash +# Updates the header `.h` with unit tested code from Swift +make darwin-style-code + +# refresh the documentation in the folder `documentation/` +make idocument + +# open the folder `documentation/` in macOS Finder +open documentation/ +# serve documentation/ +``` + +## Contributing + +### Making any symbol public + +To add any Objective-C type, constant, or member to the iOS SDK’s public interface: + +1. Ensure that the symbol is pure Objective-C and does not rely on any language features specific to Objective-C++ or the C11 dialect of C – so no namespaced types or classes named with emoji! 🙃 Most projects that depend on this SDK are either written in pure Objective-C (GNU99 dialect) or Swift, which cannot yet bridge C++ types. +1. Name the symbol according to [Cocoa naming conventions](https://developer.apple.com/library/prerelease/content/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html#//apple_ref/doc/uid/10000146i). Use the `MLN` class prefix to avoid conflicts with client code. If the symbol has an analogue in MapKit, name the symbol according to MapKit. +1. Provide full documentation comments. We use [jazzy](https://github.com/realm/jazzy/) to produce the documentation found in the SDK distribution and [on the website for this SDK](https://maplibre.org/maplibre-native/ios/api/). We also recognize that many developers rely on Xcode’s Quick Help feature. jazzy supports Markdown formatting; however, Quick Help supports only [HeaderDoc](https://developer.apple.com/legacy/library/documentation/DeveloperTools/Conceptual/HeaderDoc/intro/intro.html) syntax and a subset of Doxygen syntax. For hyperlinks, use HTML syntax, which is recognized by both tools. + +### Making a type or constant public + +To add an Objective-C class, protocol, category, typedef, enumeration, or global constant to the iOS maps SDK’s public interface: + +1. _(Optional.)_ Add the macro `MLN_EXPORT` prior to the declaration for classes and global constants when adding them in shared headers located in `platform/darwin`. To use this macro, include `MLNFoundation.h`. You can check whether all public symbols are exported correctly by running `make darwin-check-public-symbols`. +1. _(Optional.)_ Add the type or constant’s name to the relevant category in the `custom_categories` section of [the jazzy configuration file](./jazzy.yml). This is required for classes and protocols and also recommended for any other type that is strongly associated with a particular class or protocol. If you leave out this step, the symbol will appear in an “Other” section in the generated HTML documentation’s table of contents. +1. _(Optional.)_ If the symbol would also be publicly exposed in the macOS maps SDK, consult [the companion macOS document](../macos/DEVELOPING.md#making-a-type-or-constant-public) for further instructions. + +### Adding a source code file + +To add an Objective-C header or implementation file to the iOS maps SDK: + +1. Add the file to the Headers or Compile Sources build phase, as appropriate, of both the “dynamic” and “static” targets. You can either use the Build Phases tab of the project editor or the Target Membership section of the File inspector. +1. Audit new headers for nullability. Typically, you will wrap a header with `NS_ASSUME_NONNULL_BEGIN` and `NS_ASSUME_NONNULL_END`. +1. _(Optional.)_ If it’s a public header, change its visibility from Project to Public and import it in [the iOS SDK’s umbrella header](./src/Mapbox.h). +1. _(Optional.)_ If the file would also be used by the macOS maps SDK, make sure it’s in [platform/darwin/src/](../darwin/src/), then consult [the companion macOS document](../macos/DEVELOPING.md#adding-a-source-code-file) for further instructions. +1. Run `scripts/generate-file-lists.js` to update the generated source file list for third party build systems. + +### Adding a resource + +To add a resource (such as an image, SSL certificate, property list, or strings table) to the iOS maps SDK: + +1. Add the header to the Copy Bundle Resources build phase of both the “dynamic” and “bundle” targets. You can either use the Build Phases tab of the project editor or the Target Membership section of the File inspector. +1. _(Optional.)_ If the resource would also be used by the macOS maps SDK, make sure it’s in [platform/darwin/resources/](../darwin/resources/), then consult [the companion macOS document](../macos/DEVELOPING.md#adding-a-resource) for further instructions. + +### Adding user-facing text + +To add or update text that the user may see in the iOS maps SDK: + +1. Make sure the implementation file imports [NSBundle+MLNAdditions.h](../darwin/src/NSBundle+MLNAdditions.h). +1. Use the `NSLocalizedStringWithDefaultValue()` macro: + * `key` is a unique identifier that won’t change if the user-facing text ever needs to change. + * `tbl` is `Foundation` in code shared between the iOS and macOS maps SDKs, or `nil` otherwise. + * `bundle` is `nil`; the redefined macro looks for the SDK bundle at runtime and ignores this argument. + * `val` is the English string. +1. _(Optional.)_ When dealing with a number followed by a pluralized word, do not split the string. Instead, use a format string and make `val` ambiguous, like `%d file(s)`. Then pluralize for English in the appropriate [.stringsdict file](https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPInternational/StringsdictFileFormat/StringsdictFileFormat.html). See [platform/darwin/resources/en.lproj/Foundation.stringsdict](../darwin/resources/en.lproj/Foundation.stringsdict) for an example. Localizers should do likewise for their languages. +1. Run `make genstrings` and commit any changes it makes to .strings files. The make rule also updates the macOS maps SDK’s strings tables. + +### Adding a localization + +> **Warning** +> This section is outdated. + +Translations of all the Mapbox GL Native SDKs are managed [in Transifex](https://www.transifex.com/mapbox/mapbox-gl-native/). If your language already has a translation, feel free to complete or proofread it. Otherwise, please [request your language](https://www.transifex.com/mapbox/mapbox-gl-native/languages/). Note that we’re primarily interested in languages that iOS supports as system languages. + +Once you’ve finished translating the SDK into a new language in Transifex, perform these steps to make Xcode aware of the translation: + +1. In ios.xcworkspace, open the project editor for ios.xcodeproj. Using the project editor’s sidebar or tab bar dropdown, go to the “ios” project; under the Localizations section of the Info tab, click the + button to add your language to the project. +1. In the sheet that appears, select all the .strings and .stringsdict files but not the .storyboard file. (LaunchScreen.storyboard is part of the iosapp example application, which is not localized.) If your language lacks declension and pluralization, as in the case of Chinese, omit the .stringsdict files. +1. In the Project navigator, expand each .stringsdict file in the project. An additional version for your localization should be listed; translate it. See Apple’s documentation on the [.stringsdict format](https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPInternational/StringsdictFileFormat/StringsdictFileFormat.html). +1. In the Project navigator, select Demo App/Localizable.strings and then, in the File Inspector, check the box for your new localization. +1. Repeat the steps above in macos.xcworkspace. + +The .strings files should still be in the original English – that’s expected. Now you can pull your translations into this repository: + +1. _(First time only.)_ Download the [`tx` command line tool](https://docs.transifex.com/client/installing-the-client) and [configure your .transifexrc](https://docs.transifex.com/client/client-configuration). +1. Run `tx pull -a`. +1. Convert any added .strings files from UTF-16 encoding to UTF-8 encoding to facilitate diffing and merging. You can convert the file encoding using Xcode’s File inspector or the following command (substituting _MYLANG_ for the locale code): + +``` +find platform/{darwin,ios}/resources platform/macos/sdk -path '*/MYLANG.lproj/*.strings' -exec textutil -convert txt -extension strings -inputencoding UTF-16 -encoding UTF-8 {} -output {} \; +``` + +### Adding a code example + +To add an example code listing to the documentation for a class or class member: + + 1. Add a test case named in the form `testMLNClass` or `testMLNClass$method` to [MLNDocumentationExamplesTests](../darwin/test/MLNDocumentationExampleTests.swift). + 2. Wrap the code you'd like to appear in the documentation within the + following comment blocks: + ``` + //#-example-code + ... + //#-end-example-code + ``` + 3. Insert an empty Swift code block inside the header file where you'd like the + example code to be inserted. + 4. Run `make darwin-update-examples` to extract example code from the test + method below and insert it into the header. +[SourceKitten](https://github.com/jpsim/SourceKitten/) is required and will be installed automatically using Homebrew. +### Customizing compilation settings +You can provide an optional and custom [`xcconfig`](https://help.apple.com/xcode/mac/current/#/dev745c5c974) file named `platform/darwin/developer.xcconfig` to set custom build options. This file is ignored by git. These custom settings apply to all configurations (`Debug`, `Release`, `RelWithDebInfo`), but do **not** apply to the core `mbgl` files. This mechanism allows you to try different compiler settings (for example when testing an Xcode beta). +## Testing +You can review test results in `$(IOS_OUTPUT_PATH)/Logs/Test`. +`make ios-test` builds and runs unit tests of cross-platform code and of the SDK. Other types of tests available include: +* `make ios-integration-test` runs UI tests from the "Integration Test Harness" scheme. +* `make ios-sanitize` runs unit tests from the "CI" scheme with the Thread Sanitizer and Undefined Behavior Sanitizer enabled. +* `make ios-sanitize-address` runs unit tests from the "CI" scheme with the Address Sanitizer enabled. +* `make ios-static-analyzer` runs unit tests from the "CI" scheme with the Static Analyzer enabled. +* `make ios-uitest` runs user interface testing from the "iosapp" scheme. +These commands are run by default on a single Simulator. To enable legacy iOS versions and more device types, add `MORE_SIMULATORS=YES`. Use `IOS_LATEST=YES`, `IOS_11=YES`, etc. to test on specific iOS versions. +To only run a specific test or class of tests, add `ONLY_TESTING=test/MLNNameOfTestClass/testNameOfTest`. +To skip a specific test or class of tests, add `SKIP_TESTING=test/MLNNameOfTestClass/testNameOfTest`. +To run the cross-platform tests in Xcode instead of on the command line: +1. Run `make iproj` to set up the workspace. +2. Change the scheme to “test (platform project)” and press Command-R (⌘-R) to run core unit tests. +3. Change the scheme to “CI” and press Command-U (⌘-U) to run SDK integration tests. +### Testing from the command line +```bash +# Change Directory +cd platform/ios/platform/ios +# Test Scheme CI +xcodebuild test -scheme CI \ + -destination 'platform=iOS Simulator,OS=14.5,name=iPhone SE (2nd generation)' +# Test Scheme with Test Plan over OS versions +xcodebuild test -scheme CI -testPlan CI-Expressions \ + -destination 'platform=iOS Simulator,OS=14.5,name=iPhone SE (2nd generation)' +xcodebuild test -scheme CI -testPlan CI-Expressions \ + -destination 'platform=iOS Simulator,OS=15.4,name=iPhone SE (3rd generation)' +xcodebuild test -scheme CI -testPlan CI-Expressions \ + -destination 'platform=iOS Simulator,OS=15.5,name=iPhone SE (3rd generation)' +``` + +## Access tokens + +> **Warning** +> This section is outdated. + +The included applications use Mapbox vector tiles, which require a Mapbox account and API access token. Obtain an access token on the [Mapbox account page](https://www.mapbox.com/studio/account/tokens/). + +Before running the demo ("`iosapp`") or benchmarking ("`bench`") applications, first create a new text file called `.mapbox` or `mapbox` in your home directory containing your access token. The access token will then be automatically inserted into the application's Info.plist at runtime. + +## Using iosapp + +- Pan to move +- Pinch to zoom +- Use two fingers to rotate +- Double-tap to zoom in one level +- Two-finger single-tap to zoom out one level +- Double-tap, long-pressing the second, then pan up and down to "quick zoom" (meant for one-handed use) +- Use the debug menu to add test annotations, reset position, and cycle through the debug options. + +## Simulator + +You can run automated test on a Simulator or Device by changing to the Scheme `iosapp` and choosing `Product` > `Test` (or use `⌘-U`). Use `⌘-9` to navigate to `Reports` to see results and browse through screenshots. This method of testing should work well with CI tools such as GitHub Actions, Xcode Server Bots, & AWS Device Farm. \ No newline at end of file diff --git a/platform/ios/platform/ios/Documentation.docc/Documentation.md b/platform/ios/Documentation.docc/Documentation.md similarity index 100% rename from platform/ios/platform/ios/Documentation.docc/Documentation.md rename to platform/ios/Documentation.docc/Documentation.md diff --git a/platform/ios/INSTALL.md b/platform/ios/INSTALL.md index 1365e8eb4..7bca3d2f4 100644 --- a/platform/ios/INSTALL.md +++ b/platform/ios/INSTALL.md @@ -4,8 +4,240 @@ provide [easy-to-install, prebuilt versions of the SDK for iOS that you can download instantly and get started with fast](https://github.com/maplibre/maplibre-gl-native-distribution).** -If you're certain you need to build from source, rather than using a prebuilt SDK, please -refer to the installation instructions for the platform of interest: +# Integrating custom builds of the Mapbox Maps SDK for iOS into your application -* [Mapbox Maps SDK for iOS](platform/ios/INSTALL.md) -* [Mapbox Maps SDK for macOS](platform/macos/INSTALL.md) +This document explains how to build a development version of Mapbox Maps SDK for iOS for use in your own Cocoa Touch application. To use a production-ready version of the SDK, see the [Mapbox Maps SDK for iOS installation page](https://www.mapbox.com/install/ios/). + +### Requirements + +The Mapbox Maps SDK for iOS is intended to run on iOS 9.0 and above on the following devices: + +* iPhone 4s and above (5, 5c, 5s, 6, 6 Plus, 7, 7 Plus, 8, 8 Plus, X) +* iPad 2 and above (3, 4, Mini, Air, Mini 2, Air 2, Pro) +* iPod touch 5th generation and above + + +Note that debugging in 32-bit simulators (such as the iPhone 5 or iPad 2) is only partially supported. + +The Mapbox Maps SDK for iOS requires: + +* Xcode 9.1 or higher to compile from source +* Xcode 8.0 or higher to integrate the compiled framework into an application + +Before building, follow these steps to install prerequisites: + +1. Install [Xcode](https://developer.apple.com/xcode/) +1. Launch Xcode and install any updates +1. Install [Homebrew](http://brew.sh) +1. Install additional dependencies. + ```bash + brew install node cmake ccache pkg-config glfw cmake-docs + ``` + +1. Install [xcpretty](https://github.com/supermarin/xcpretty) for prettifying command line builds. (optional): + ``` + sudo gem install xcpretty + ``` +1. Install [jazzy](https://github.com/realm/jazzy) for generating API documentation (optional): + ``` + sudo gem install jazzy + ``` + +### Build the iOS Demo App + +``` +git clone --recurse-submodules git@github.com:maplibre/maplibre-native.git +cd maplibre-native/platform/ios +make iproj +``` + +Xcode should automatically open, and you can then build the Demo App (iosapp). + +![iosapp](https://user-images.githubusercontent.com/556367/214957991-7ddb56b1-937e-4a15-a03c-36f355677cf6.png) + +If you wish to deploy on attached hardware, you need to setup your Apple Developer account and select it in the *Signing and Capabilities* menu. + +![Team](https://user-images.githubusercontent.com/556367/214957613-2d565b1a-6590-495e-8979-2022096e02f1.png) + +### Building the SDK + +1. Clone the git repository: + ```bash + git clone --recurse-submodules https://github.com/maplibre/maplibre-native.git + cd maplibre-native + ``` + Note that you must check out the project's git submodules to build. If you did not include `--recurse-submodules` in the clone, you can later run `git submodule update --init`. +1. Run `make iframework BUILDTYPE=Release`. The packaging script will produce a `build/ios/pkg/` folder containing: + - a `dynamic` folder containing a dynamically-linked fat framework with debug symbols for devices and the iOS Simulator + - a `documentation` folder with HTML API documentation + - an example `Settings.bundle` containing an optional Mapbox Telemetry opt-out setting + +See the [packaging documentation](DEVELOPING.md#packaging-builds) for other build options. + +### Installation + +There are several ways to install custom builds of the Mapbox Maps SDK for iOS: + +#### Dynamic framework + +This is the recommended workflow for manually integrating custom builds of the SDK into an application: + +1. Build from source manually, per above. + +1. Open the project editor, select your application target, then go to the General tab. Drag Mapbox.framework from the `build/ios/pkg/dynamic/` directory into the “Embedded Binaries” section. (Don’t drag it into the “Linked Frameworks and Libraries” section; Xcode will add it there automatically.) In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish. + +1. In the Build Phases tab, click the + button at the top and select “New Run Script Phase”. Enter the following code into the script text field: + +```bash +bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Mapbox.framework/strip-frameworks.sh" +``` + +(The last step, courtesy of [Realm](https://github.com/realm/realm-cocoa/), is required for working around an [iOS App Store bug](http://www.openradar.me/radar?id=6409498411401216) when archiving universal binaries.) + +##### Snapshot builds + +A snapshot build of the dynamic framework, based on the latest commit to the master branch, is available for download [here](https://mapbox.s3.amazonaws.com/mapbox-gl-native/ios/builds/mapbox-ios-sdk-snapshot-dynamic.zip). + +#### Static framework + +You can alternatively install the SDK as a static framework: + +1. Build from source using the `make iframework FORMAT=static BUILDTYPE=Release` command. + +1. Drag the Mapbox.bundle and Mapbox.framework from the `build/ios/pkg/static/` directory into the Project navigator. In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish. Open the project editor and select your application target to verify that the following changes occurred automatically: + + - In the General tab, Mapbox.framework is listed in the “Linked Frameworks and Libraries” section. + - In the Build Settings tab, the “Framework Search Paths” (`FRAMEWORK_SEARCH_PATHS`) build setting includes the directory that contains Mapbox.framework. For most projects, the default value of `$(inherited) $(PROJECT_DIR)` should be sufficient. + - In the Build Phases tab, Mapbox.bundle is listed in the “Copy Bundle Resources” build phase. + +1. Back in the General tab, add the following Cocoa Touch frameworks and libraries to the “Linked Frameworks and Libraries” section: + + - GLKit.framework + - ImageIO.framework + - MobileCoreServices.framework + - QuartzCore.framework + - SystemConfiguration.framework + - libc++.tbd + - libsqlite3.tbd + - libz.tbd + +1. In the Build Settings tab, find the Other Linker Flags setting and add `-ObjC`. + +#### CocoaPods + +For instructions on installing stable release versions of the Mapbox Maps SDK for iOS with CocoaPods, see [our website](https://www.mapbox.com/install/ios/cocoapods/). + +As of v5.6.0, you must specify `use_frameworks!` in your Podfile. + +##### Testing pre-releases with CocoaPods + +To test pre-releases of the dynamic framework, directly specify the version in your `Podfile`: + +```rb +pod 'Mapbox-iOS-SDK', '~> x.x.x-alpha.1' +``` + +##### Testing snapshot releases with CocoaPods + +To test a snapshot dynamic framework build, update your app’s `Podfile` to point to: + +```rb +pod 'Mapbox-iOS-SDK-snapshot-dynamic', podspec: 'https://raw.githubusercontent.com/mapbox/mapbox-gl-native-ios/master/platform/ios/Mapbox-iOS-SDK-snapshot-dynamic.podspec' +``` + +##### Using your own build with CocoaPods + +1. Build from source manually, per above. + +1. Edit [`Mapbox-iOS-SDK.podspec`](./Mapbox-iOS-SDK.podspec) to point to the local build output: + + ```diff + m.source = { + - :http => "https://mapbox.s3.amazonaws.com/mapbox-gl-native/ios/builds/mapbox-ios-sdk-#{m.version.to_s}-dynamic.zip", + + :path => "../../build/ios/pkg/dynamic/", + :flatten => true + } + ``` + +1. Update your app’s `Podfile` to point to the edited `Mapbox-iOS-SDK.podspec`. + + ```rb + pod 'Mapbox-iOS-SDK', :path => '{...}/platform/ios/Mapbox-iOS-SDK.podspec' + ``` + +1. Run `pod update` to grab the newly-built library. + +If using the static framework, add `$(inherited)` to your target’s Other Linker Flags in the Build Settings tab. + +##### Using pre-stripped releases with CocoaPods + +If you choose to commit the contents of your `Pods` directory to source control and are encountering file size limitations, you may wish to use builds that have been pre-stripped of debug symbols. We publish these to [our public podspecs repository](https://github.com/mapbox/pod-specs/), which should be added as an additional `source` in your app’s `Podfile`. + +```rb +source 'https://github.com/mapbox/pod-specs.git' + +pod 'Mapbox-iOS-SDK-stripped', '~> x.x.x' +``` + +Note that these builds lack some debugging information, which could make development more difficult and result in less useful crash reports. Though initially smaller on disk, using these builds has no effect on the ultimate size of your application — see our [Understanding iOS Framework Size guide](https://www.mapbox.com/help/ios-framework-size/) for more information. + +#### Carthage + +For instructions on installing stable release versions of the Mapbox Maps SDK for iOS with Carthage, see [our website](https://www.mapbox.com/install/ios/carthage/). + +Please note that as of ios-v5.6.0-alpha.2, `--no-use-binaries` has no affect on projects built with the Mapbox framework. + +##### Testing pre-releases with Carthage + +To test pre-releases of the dynamic framework, directly specify the version in your Cartfile: + +```json +binary "https://www.mapbox.com/ios-sdk/Mapbox-iOS-SDK.json" ~> x.x.x-alpha.1 +github "mapbox/mapbox-events-ios" == x.x.x +``` + +Where `x.x.x` is the latest version of the [Mapbox Mobile Events](https://github.com/mapbox/mapbox-events-ios) library. + +##### Testing snapshot releases with Carthage + +This project does not currently support using snapshot releases via Carthage. + +##### Using your own build with Carthage + +This project does not support being compiled as a local repository by Carthage. + +##### Using pre-stripped releases with Carthage + +If you require a build with debug symbols pre-stripped, use [this feed URL](https://www.mapbox.com/ios-sdk/Mapbox-iOS-SDK-stripped.json) with Carthage. + +### Configuration + +1. Some vector tiles servers require a API key. In the project editor, select the application target, then go to the Info tab. Under the “Custom iOS Target Properties” section, set `MLNApiKey` to your api key.. + +### Usage + +In a storyboard or XIB, add a view to your view controller. (Drag View from the Object library to the View Controller scene on the Interface Builder canvas.) In the Identity inspector, set the view’s custom class to `MLNMapView`. If you need to manipulate the map view programmatically: + +1. Switch to the Assistant Editor. +1. Import the `Mapbox` module. +1. Connect the map view to a new outlet in your view controller class. (Control-drag from the map view in Interface Builder to a valid location in your view controller implementation.) The resulting outlet declaration should look something like this: + +```objc +// ViewController.m +@import Mapbox; + +@interface ViewController : UIViewController + +@property (strong) IBOutlet MLNMapView *mapView; + +@end +``` + +```swift +// ViewController.swift +import Mapbox + +class ViewController: UIViewController { + @IBOutlet var mapView: MLNMapView! +} +``` \ No newline at end of file diff --git a/platform/ios/platform/ios/Integration Test Harness/AppDelegate.h b/platform/ios/Integration_Test_Harness/AppDelegate.h similarity index 100% rename from platform/ios/platform/ios/Integration Test Harness/AppDelegate.h rename to platform/ios/Integration_Test_Harness/AppDelegate.h diff --git a/platform/ios/platform/ios/Integration Test Harness/AppDelegate.m b/platform/ios/Integration_Test_Harness/AppDelegate.m similarity index 100% rename from platform/ios/platform/ios/Integration Test Harness/AppDelegate.m rename to platform/ios/Integration_Test_Harness/AppDelegate.m diff --git a/platform/ios/platform/ios/Integration Test Harness/Assets.xcassets/AppIcon.appiconset/Contents.json b/platform/ios/Integration_Test_Harness/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from platform/ios/platform/ios/Integration Test Harness/Assets.xcassets/AppIcon.appiconset/Contents.json rename to platform/ios/Integration_Test_Harness/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/platform/ios/platform/ios/Integration Test Harness/Base.lproj/LaunchScreen.storyboard b/platform/ios/Integration_Test_Harness/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from platform/ios/platform/ios/Integration Test Harness/Base.lproj/LaunchScreen.storyboard rename to platform/ios/Integration_Test_Harness/Base.lproj/LaunchScreen.storyboard diff --git a/platform/ios/platform/ios/Integration Test Harness/Info.plist b/platform/ios/Integration_Test_Harness/Info.plist similarity index 100% rename from platform/ios/platform/ios/Integration Test Harness/Info.plist rename to platform/ios/Integration_Test_Harness/Info.plist diff --git a/platform/ios/platform/ios/Integration Test Harness/main.m b/platform/ios/Integration_Test_Harness/main.m similarity index 100% rename from platform/ios/platform/ios/Integration Test Harness/main.m rename to platform/ios/Integration_Test_Harness/main.m diff --git a/platform/ios/platform/ios/Integration Tests/Annotation Tests/MLNAnnotationViewIntegrationTests.mm b/platform/ios/Integration_Tests/Annotation Tests/MLNAnnotationViewIntegrationTests.mm similarity index 100% rename from platform/ios/platform/ios/Integration Tests/Annotation Tests/MLNAnnotationViewIntegrationTests.mm rename to platform/ios/Integration_Tests/Annotation Tests/MLNAnnotationViewIntegrationTests.mm diff --git a/platform/ios/platform/ios/Integration Tests/Camera Tests/MLNCameraTransitionFinishTests.mm b/platform/ios/Integration_Tests/Camera Tests/MLNCameraTransitionFinishTests.mm similarity index 100% rename from platform/ios/platform/ios/Integration Tests/Camera Tests/MLNCameraTransitionFinishTests.mm rename to platform/ios/Integration_Tests/Camera Tests/MLNCameraTransitionFinishTests.mm diff --git a/platform/ios/platform/ios/Integration Tests/Camera Tests/MLNCameraTransitionTests.mm b/platform/ios/Integration_Tests/Camera Tests/MLNCameraTransitionTests.mm similarity index 100% rename from platform/ios/platform/ios/Integration Tests/Camera Tests/MLNCameraTransitionTests.mm rename to platform/ios/Integration_Tests/Camera Tests/MLNCameraTransitionTests.mm diff --git a/platform/ios/platform/ios/Integration Tests/Info.plist b/platform/ios/Integration_Tests/Info.plist similarity index 100% rename from platform/ios/platform/ios/Integration Tests/Info.plist rename to platform/ios/Integration_Tests/Info.plist diff --git a/platform/ios/platform/ios/Integration Tests/MBGLIntegrationTests.mm b/platform/ios/Integration_Tests/MBGLIntegrationTests.mm similarity index 100% rename from platform/ios/platform/ios/Integration Tests/MBGLIntegrationTests.mm rename to platform/ios/Integration_Tests/MBGLIntegrationTests.mm diff --git a/platform/ios/platform/ios/Integration Tests/MLNIntegrationTestCase.h b/platform/ios/Integration_Tests/MLNIntegrationTestCase.h similarity index 100% rename from platform/ios/platform/ios/Integration Tests/MLNIntegrationTestCase.h rename to platform/ios/Integration_Tests/MLNIntegrationTestCase.h diff --git a/platform/ios/platform/ios/Integration Tests/MLNIntegrationTestCase.m b/platform/ios/Integration_Tests/MLNIntegrationTestCase.m similarity index 100% rename from platform/ios/platform/ios/Integration Tests/MLNIntegrationTestCase.m rename to platform/ios/Integration_Tests/MLNIntegrationTestCase.m diff --git a/platform/ios/platform/ios/Integration Tests/MLNMapViewIntegrationTest.h b/platform/ios/Integration_Tests/MLNMapViewIntegrationTest.h similarity index 100% rename from platform/ios/platform/ios/Integration Tests/MLNMapViewIntegrationTest.h rename to platform/ios/Integration_Tests/MLNMapViewIntegrationTest.h diff --git a/platform/ios/platform/ios/Integration Tests/MLNMapViewIntegrationTest.m b/platform/ios/Integration_Tests/MLNMapViewIntegrationTest.m similarity index 100% rename from platform/ios/platform/ios/Integration Tests/MLNMapViewIntegrationTest.m rename to platform/ios/Integration_Tests/MLNMapViewIntegrationTest.m diff --git a/platform/ios/platform/ios/Integration Tests/MLNMapViewPendingBlockTests.m b/platform/ios/Integration_Tests/MLNMapViewPendingBlockTests.m similarity index 100% rename from platform/ios/platform/ios/Integration Tests/MLNMapViewPendingBlockTests.m rename to platform/ios/Integration_Tests/MLNMapViewPendingBlockTests.m diff --git a/platform/ios/platform/ios/Integration Tests/MLNNetworkConfigurationIntegrationTests.mm b/platform/ios/Integration_Tests/MLNNetworkConfigurationIntegrationTests.mm similarity index 100% rename from platform/ios/platform/ios/Integration Tests/MLNNetworkConfigurationIntegrationTests.mm rename to platform/ios/Integration_Tests/MLNNetworkConfigurationIntegrationTests.mm diff --git a/platform/ios/platform/ios/Integration Tests/MLNShapeSourceTests.m b/platform/ios/Integration_Tests/MLNShapeSourceTests.m similarity index 100% rename from platform/ios/platform/ios/Integration Tests/MLNShapeSourceTests.m rename to platform/ios/Integration_Tests/MLNShapeSourceTests.m diff --git a/platform/ios/platform/ios/Integration Tests/MLNSourceTests.swift b/platform/ios/Integration_Tests/MLNSourceTests.swift similarity index 100% rename from platform/ios/platform/ios/Integration Tests/MLNSourceTests.swift rename to platform/ios/Integration_Tests/MLNSourceTests.swift diff --git a/platform/ios/platform/ios/Integration Tests/MLNStyleLayerIntegrationTests.m b/platform/ios/Integration_Tests/MLNStyleLayerIntegrationTests.m similarity index 100% rename from platform/ios/platform/ios/Integration Tests/MLNStyleLayerIntegrationTests.m rename to platform/ios/Integration_Tests/MLNStyleLayerIntegrationTests.m diff --git a/platform/ios/platform/ios/Integration Tests/MLNStyleURLIntegrationTest.m b/platform/ios/Integration_Tests/MLNStyleURLIntegrationTest.m similarity index 100% rename from platform/ios/platform/ios/Integration Tests/MLNStyleURLIntegrationTest.m rename to platform/ios/Integration_Tests/MLNStyleURLIntegrationTest.m diff --git a/platform/ios/platform/ios/Integration Tests/MLNTestLocationManager.h b/platform/ios/Integration_Tests/MLNTestLocationManager.h similarity index 100% rename from platform/ios/platform/ios/Integration Tests/MLNTestLocationManager.h rename to platform/ios/Integration_Tests/MLNTestLocationManager.h diff --git a/platform/ios/platform/ios/Integration Tests/MLNTestLocationManager.m b/platform/ios/Integration_Tests/MLNTestLocationManager.m similarity index 100% rename from platform/ios/platform/ios/Integration Tests/MLNTestLocationManager.m rename to platform/ios/Integration_Tests/MLNTestLocationManager.m diff --git a/platform/ios/platform/ios/Integration Tests/Snapshotter Tests/MLNMapSnapshotterSwiftTests.swift b/platform/ios/Integration_Tests/Snapshotter Tests/MLNMapSnapshotterSwiftTests.swift similarity index 100% rename from platform/ios/platform/ios/Integration Tests/Snapshotter Tests/MLNMapSnapshotterSwiftTests.swift rename to platform/ios/Integration_Tests/Snapshotter Tests/MLNMapSnapshotterSwiftTests.swift diff --git a/platform/ios/platform/ios/Integration Tests/Snapshotter Tests/MLNMapSnapshotterTest.m b/platform/ios/Integration_Tests/Snapshotter Tests/MLNMapSnapshotterTest.m similarity index 100% rename from platform/ios/platform/ios/Integration Tests/Snapshotter Tests/MLNMapSnapshotterTest.m rename to platform/ios/Integration_Tests/Snapshotter Tests/MLNMapSnapshotterTest.m diff --git a/platform/ios/platform/ios/Integration Tests/integration-Bridging-Header.h b/platform/ios/Integration_Tests/integration-Bridging-Header.h similarity index 100% rename from platform/ios/platform/ios/Integration Tests/integration-Bridging-Header.h rename to platform/ios/Integration_Tests/integration-Bridging-Header.h diff --git a/platform/ios/platform/ios/Mapbox-iOS-SDK-snapshot-dynamic.podspec b/platform/ios/Mapbox-iOS-SDK-snapshot-dynamic.podspec similarity index 100% rename from platform/ios/platform/ios/Mapbox-iOS-SDK-snapshot-dynamic.podspec rename to platform/ios/Mapbox-iOS-SDK-snapshot-dynamic.podspec diff --git a/platform/ios/platform/ios/Mapbox-iOS-SDK-stripped.podspec b/platform/ios/Mapbox-iOS-SDK-stripped.podspec similarity index 100% rename from platform/ios/platform/ios/Mapbox-iOS-SDK-stripped.podspec rename to platform/ios/Mapbox-iOS-SDK-stripped.podspec diff --git a/platform/ios/platform/ios/Mapbox-iOS-SDK.podspec b/platform/ios/Mapbox-iOS-SDK.podspec similarity index 100% rename from platform/ios/platform/ios/Mapbox-iOS-SDK.podspec rename to platform/ios/Mapbox-iOS-SDK.podspec diff --git a/platform/ios/platform/ios/Mapbox.playground/Contents.swift b/platform/ios/Mapbox.playground/Contents.swift similarity index 100% rename from platform/ios/platform/ios/Mapbox.playground/Contents.swift rename to platform/ios/Mapbox.playground/Contents.swift diff --git a/platform/ios/platform/ios/Mapbox.playground/contents.xcplayground b/platform/ios/Mapbox.playground/contents.xcplayground similarity index 100% rename from platform/ios/platform/ios/Mapbox.playground/contents.xcplayground rename to platform/ios/Mapbox.playground/contents.xcplayground diff --git a/platform/ios/platform/ios/Mapbox.playground/playground.xcworkspace/contents.xcworkspacedata b/platform/ios/Mapbox.playground/playground.xcworkspace/contents.xcworkspacedata similarity index 100% rename from platform/ios/platform/ios/Mapbox.playground/playground.xcworkspace/contents.xcworkspacedata rename to platform/ios/Mapbox.playground/playground.xcworkspace/contents.xcworkspacedata diff --git a/platform/ios/README.md b/platform/ios/README.md index d1821a493..3b856c97b 100644 --- a/platform/ios/README.md +++ b/platform/ios/README.md @@ -1,6 +1,143 @@ -# MapLibre Native for iOS and macOS +# MapLibre Native for iOS -This directory contains the source code of MapLibre Native for Apple platforms (iOS and for macOS). +[![GitHub Action build status](https://github.com/maplibre/maplibre-native/workflows/ios-ci/badge.svg)](https://github.com/maplibre/maplibre-native/actions/workflows/ios-ci.yml) [![GitHub Action build status](https://github.com/maplibre/maplibre-native/workflows/ios-release/badge.svg)](https://github.com/maplibre/maplibre-native/actions/workflows/ios-release.yml) -- [iOS](./platform/ios/README.md) -- [macOS](./platform/macos/README.md) \ No newline at end of file +A library based on [MapLibre Native](https://github.com/maplibre/maplibre-native) for embedding interactive map views with scalable, customizable vector maps into iOS Applications. + +## Getting Started + +MapLibre Native for iOS is distributed using the [Swift Package Index](https://swiftpackageindex.com/maplibre/maplibre-gl-native-distribution). To add it to your project, follow the steps below. + +1. To add a package dependency to your Xcode project, select File > Swift Packages > Add Package Dependency and enter its repository URL. You can also navigate to your target’s General pane, and in the “Frameworks, Libraries, and Embedded Content” section, click the + button, select Add Other, and choose Add Package Dependency. + +2. Either add MapLibre GitHub distribution URL `https://github.com/maplibre/maplibre-gl-native-distribution` or search for `maplibre-native` package. + +3. Choose "Next". Xcode should clone the distribution repository and download the binaries. + +4. To create a minimal app, update `ContentView.swift` (which should have been automatically created when you initalized the new XCode project) with the following contents: + +```swift +import SwiftUI +import Mapbox + +struct ContentView: View { + var body: some View { + MapView().edgesIgnoringSafeArea(.all) + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} + +struct MapView: UIViewRepresentable { + func makeUIView(context: Context) -> MGLMapView { + // Build the style URL + let styleURL = URL(string: "https://demotiles.maplibre.org/style.json") + + // Create the map view + let mapView = MGLMapView(frame: .zero, styleURL: styleURL) + + mapView.logoView.isHidden = true + + mapView.setCenter( + CLLocationCoordinate2D( + latitude: 23.16, longitude: -109.50), animated: false) + + mapView.setZoomLevel(4, animated: false) + return mapView + + } + + func updateUIView(_ mapView: MGLMapView, context: Context) { + // Update the view if needed + } +} +``` + +There is a an open bounty to extend this Getting Started guide ([#809](https://github.com/maplibre/maplibre-native/issues/809)). In the meantime, refer to one of these external guides: + +- [Get Started with MapLibre Native for iOS using SwiftUI](https://docs.maptiler.com/maplibre-gl-native-ios/ios-swiftui-basic-get-started/) +- [Get Started With MapLibre Native for iOS using UIKit](https://docs.maptiler.com/maplibre-gl-native-ios/ios-uikit-basic-get-started/) + +## Developing + +The following are instructions on how to build MapLibre Native for development purposes. + +### Downloading Source + +Download the source and install all submodules if you have not already, by running the following from the root of the repository. + +``` +git clone --recurse-submodules git@github.com:maplibre/maplibre-native.git +cd maplibre-native +``` + +### Bazel + +[Bazel](https://bazel.build/) together with [rules_xcodeproj](https://github.com/MobileNativeFoundation/rules_xcodeproj) is the preferred build system. Please [share your experiences](https://github.com/maplibre/maplibre-native/discussions/1145). + +You need to install bazelisk, which is a wrapper around Bazel which ensures that the version specified in `.bazelversion` is used. + +``` +brew install bazelisk +``` + +#### Creating `config.bzl` + +You need to configure Bazel. Copy the example config from `platform/ios`. + +``` +cp bazel/example_config.bzl bazel/config.bzl +``` + +You need to set your `BUNDLE_ID_PREFIX` to be unique (ideally use a domain that you own in reverse domain name notation). + +``` +APPLE_MOBILE_PROVISIONING_PROFILE_TEAM_ID = "FFNX6834U8" +APPLE_MOBILE_PROVISIONING_PROFILE_NAME = "iOS Team Provisioning Profile: *" +BUNDLE_ID_PREFIX = "com.firstnamelastname" +``` + +You can keep leave the `APPLE_MOBILE_PROVISIONING_PROFILE_NAME` alone. + +Set the Team ID to the Team ID of your Apple Developer Account (paid or unpaid both work). If you do not know your Team ID, enter the following command in the terminal: + +``` +cd ~/Library/MobileDevice/Provisioning\ Profiles && open . +``` + +Then select one of the profiles and click spacebar. Your Team ID is the string between parentheses in the value of "Team". + +If there are no provisioning profiles available, continue this guide and let Xcode generate a provisioning profile for you. You will need to update the Team ID after this happened. + +#### Create the Xcode Project + +_These instructions are for XCode 14.3.1_ + + +``` +bazel run //platform/ios:xcodeproj +xed platform/ios/MapLibre.xcodeproj +``` + +Then once in Xcode, click on "MapLibre" on the left, then "App" under Targets, then "Signing & Capabilities" in the tabbed menu. +Confirm that no errors are shown: + +image + +Try to run the example App in the simulator and on a device to confirm your setup works. + +#### Using Bazel from the Command Line + +It is also possible to build and run the test application in a simulator from the command line without opening Xcode. + +``` +bazel run //platform/ios:App +``` + +## Documentation + +- [MapLibre Native for iOS API Reference](https://maplibre.org/maplibre-native/ios/api/) \ No newline at end of file diff --git a/platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Contents.json b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Contents.json rename to platform/ios/app/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-1024.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-1024.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-1024.png rename to platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-1024.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.png rename to platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x-1.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png rename to platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png rename to platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40.png rename to platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.png rename to platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x-1.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png rename to platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png rename to platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png rename to platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76.png rename to platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png rename to platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png rename to platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Small.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Small.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Small.png rename to platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Small.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png b/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png rename to platform/ios/app/Assets.xcassets/AppIcon.appiconset/Icon-Spotlight-40@3x.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/Contents.json b/platform/ios/app/Assets.xcassets/Contents.json similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/Contents.json rename to platform/ios/app/Assets.xcassets/Contents.json diff --git a/platform/ios/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/Contents.json b/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/Contents.json similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/Contents.json rename to platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/Contents.json diff --git a/platform/ios/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask.png b/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask.png rename to platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@2x.png b/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@2x.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@2x.png rename to platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@2x.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@3x.png b/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@3x.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@3x.png rename to platform/ios/app/Assets.xcassets/TrackingHeadingMask.imageset/TrackingHeadingMask@3x.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/Contents.json b/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/Contents.json similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/Contents.json rename to platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/Contents.json diff --git a/platform/ios/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png b/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png rename to platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png b/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png rename to platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@2x.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png b/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png rename to platform/ios/app/Assets.xcassets/TrackingLocationMask.imageset/TrackingLocationMask@3x.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/Contents.json b/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/Contents.json similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/Contents.json rename to platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/Contents.json diff --git a/platform/ios/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask.png b/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask.png rename to platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@2x.png b/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@2x.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@2x.png rename to platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@2x.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@3x.png b/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@3x.png similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@3x.png rename to platform/ios/app/Assets.xcassets/TrackingLocationOffMask.imageset/TrackingLocationOffMask@3x.png diff --git a/platform/ios/platform/ios/app/Assets.xcassets/settings.imageset/Contents.json b/platform/ios/app/Assets.xcassets/settings.imageset/Contents.json similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/settings.imageset/Contents.json rename to platform/ios/app/Assets.xcassets/settings.imageset/Contents.json diff --git a/platform/ios/platform/ios/app/Assets.xcassets/settings.imageset/settings.pdf b/platform/ios/app/Assets.xcassets/settings.imageset/settings.pdf similarity index 100% rename from platform/ios/platform/ios/app/Assets.xcassets/settings.imageset/settings.pdf rename to platform/ios/app/Assets.xcassets/settings.imageset/settings.pdf diff --git a/platform/ios/platform/ios/app/Base.lproj/Localizable.strings b/platform/ios/app/Base.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/Base.lproj/Localizable.strings rename to platform/ios/app/Base.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/Info.plist b/platform/ios/app/Info.plist similarity index 100% rename from platform/ios/platform/ios/app/Info.plist rename to platform/ios/app/Info.plist diff --git a/platform/ios/platform/ios/app/LaunchScreen.storyboard b/platform/ios/app/LaunchScreen.storyboard similarity index 100% rename from platform/ios/platform/ios/app/LaunchScreen.storyboard rename to platform/ios/app/LaunchScreen.storyboard diff --git a/platform/ios/platform/ios/app/MBXAnnotationView.h b/platform/ios/app/MBXAnnotationView.h similarity index 100% rename from platform/ios/platform/ios/app/MBXAnnotationView.h rename to platform/ios/app/MBXAnnotationView.h diff --git a/platform/ios/platform/ios/app/MBXAnnotationView.m b/platform/ios/app/MBXAnnotationView.m similarity index 100% rename from platform/ios/platform/ios/app/MBXAnnotationView.m rename to platform/ios/app/MBXAnnotationView.m diff --git a/platform/ios/platform/ios/app/MBXAppDelegate.h b/platform/ios/app/MBXAppDelegate.h similarity index 100% rename from platform/ios/platform/ios/app/MBXAppDelegate.h rename to platform/ios/app/MBXAppDelegate.h diff --git a/platform/ios/platform/ios/app/MBXAppDelegate.m b/platform/ios/app/MBXAppDelegate.m similarity index 100% rename from platform/ios/platform/ios/app/MBXAppDelegate.m rename to platform/ios/app/MBXAppDelegate.m diff --git a/platform/ios/platform/ios/app/MBXCustomCalloutView.h b/platform/ios/app/MBXCustomCalloutView.h similarity index 100% rename from platform/ios/platform/ios/app/MBXCustomCalloutView.h rename to platform/ios/app/MBXCustomCalloutView.h diff --git a/platform/ios/platform/ios/app/MBXCustomCalloutView.m b/platform/ios/app/MBXCustomCalloutView.m similarity index 100% rename from platform/ios/platform/ios/app/MBXCustomCalloutView.m rename to platform/ios/app/MBXCustomCalloutView.m diff --git a/platform/ios/platform/ios/app/MBXCustomLocationViewController.h b/platform/ios/app/MBXCustomLocationViewController.h similarity index 100% rename from platform/ios/platform/ios/app/MBXCustomLocationViewController.h rename to platform/ios/app/MBXCustomLocationViewController.h diff --git a/platform/ios/platform/ios/app/MBXCustomLocationViewController.m b/platform/ios/app/MBXCustomLocationViewController.m similarity index 100% rename from platform/ios/platform/ios/app/MBXCustomLocationViewController.m rename to platform/ios/app/MBXCustomLocationViewController.m diff --git a/platform/ios/platform/ios/app/MBXEmbeddedMapViewController.h b/platform/ios/app/MBXEmbeddedMapViewController.h similarity index 100% rename from platform/ios/platform/ios/app/MBXEmbeddedMapViewController.h rename to platform/ios/app/MBXEmbeddedMapViewController.h diff --git a/platform/ios/platform/ios/app/MBXEmbeddedMapViewController.m b/platform/ios/app/MBXEmbeddedMapViewController.m similarity index 100% rename from platform/ios/platform/ios/app/MBXEmbeddedMapViewController.m rename to platform/ios/app/MBXEmbeddedMapViewController.m diff --git a/platform/ios/platform/ios/app/MBXFrameTimeGraphView.h b/platform/ios/app/MBXFrameTimeGraphView.h similarity index 100% rename from platform/ios/platform/ios/app/MBXFrameTimeGraphView.h rename to platform/ios/app/MBXFrameTimeGraphView.h diff --git a/platform/ios/platform/ios/app/MBXFrameTimeGraphView.m b/platform/ios/app/MBXFrameTimeGraphView.m similarity index 100% rename from platform/ios/platform/ios/app/MBXFrameTimeGraphView.m rename to platform/ios/app/MBXFrameTimeGraphView.m diff --git a/platform/ios/platform/ios/app/MBXOfflinePacksTableViewController.h b/platform/ios/app/MBXOfflinePacksTableViewController.h similarity index 100% rename from platform/ios/platform/ios/app/MBXOfflinePacksTableViewController.h rename to platform/ios/app/MBXOfflinePacksTableViewController.h diff --git a/platform/ios/platform/ios/app/MBXOfflinePacksTableViewController.m b/platform/ios/app/MBXOfflinePacksTableViewController.m similarity index 100% rename from platform/ios/platform/ios/app/MBXOfflinePacksTableViewController.m rename to platform/ios/app/MBXOfflinePacksTableViewController.m diff --git a/platform/ios/platform/ios/app/MBXOrnamentsViewController.h b/platform/ios/app/MBXOrnamentsViewController.h similarity index 100% rename from platform/ios/platform/ios/app/MBXOrnamentsViewController.h rename to platform/ios/app/MBXOrnamentsViewController.h diff --git a/platform/ios/platform/ios/app/MBXOrnamentsViewController.m b/platform/ios/app/MBXOrnamentsViewController.m similarity index 100% rename from platform/ios/platform/ios/app/MBXOrnamentsViewController.m rename to platform/ios/app/MBXOrnamentsViewController.m diff --git a/platform/ios/platform/ios/app/MBXSnapshotsViewController.h b/platform/ios/app/MBXSnapshotsViewController.h similarity index 100% rename from platform/ios/platform/ios/app/MBXSnapshotsViewController.h rename to platform/ios/app/MBXSnapshotsViewController.h diff --git a/platform/ios/platform/ios/app/MBXSnapshotsViewController.m b/platform/ios/app/MBXSnapshotsViewController.m similarity index 100% rename from platform/ios/platform/ios/app/MBXSnapshotsViewController.m rename to platform/ios/app/MBXSnapshotsViewController.m diff --git a/platform/ios/platform/ios/app/MBXState.h b/platform/ios/app/MBXState.h similarity index 100% rename from platform/ios/platform/ios/app/MBXState.h rename to platform/ios/app/MBXState.h diff --git a/platform/ios/platform/ios/app/MBXState.m b/platform/ios/app/MBXState.m similarity index 100% rename from platform/ios/platform/ios/app/MBXState.m rename to platform/ios/app/MBXState.m diff --git a/platform/ios/platform/ios/app/MBXStateManager.h b/platform/ios/app/MBXStateManager.h similarity index 100% rename from platform/ios/platform/ios/app/MBXStateManager.h rename to platform/ios/app/MBXStateManager.h diff --git a/platform/ios/platform/ios/app/MBXStateManager.m b/platform/ios/app/MBXStateManager.m similarity index 100% rename from platform/ios/platform/ios/app/MBXStateManager.m rename to platform/ios/app/MBXStateManager.m diff --git a/platform/ios/platform/ios/app/MBXUserLocationAnnotationView.h b/platform/ios/app/MBXUserLocationAnnotationView.h similarity index 100% rename from platform/ios/platform/ios/app/MBXUserLocationAnnotationView.h rename to platform/ios/app/MBXUserLocationAnnotationView.h diff --git a/platform/ios/platform/ios/app/MBXUserLocationAnnotationView.m b/platform/ios/app/MBXUserLocationAnnotationView.m similarity index 100% rename from platform/ios/platform/ios/app/MBXUserLocationAnnotationView.m rename to platform/ios/app/MBXUserLocationAnnotationView.m diff --git a/platform/ios/platform/ios/app/MBXViewController.h b/platform/ios/app/MBXViewController.h similarity index 100% rename from platform/ios/platform/ios/app/MBXViewController.h rename to platform/ios/app/MBXViewController.h diff --git a/platform/ios/platform/ios/app/MBXViewController.m b/platform/ios/app/MBXViewController.m similarity index 100% rename from platform/ios/platform/ios/app/MBXViewController.m rename to platform/ios/app/MBXViewController.m diff --git a/platform/ios/platform/ios/app/MLNMapView_Experimental.h b/platform/ios/app/MLNMapView_Experimental.h similarity index 100% rename from platform/ios/platform/ios/app/MLNMapView_Experimental.h rename to platform/ios/app/MLNMapView_Experimental.h diff --git a/platform/ios/platform/ios/app/Main.storyboard b/platform/ios/app/Main.storyboard similarity index 100% rename from platform/ios/platform/ios/app/Main.storyboard rename to platform/ios/app/Main.storyboard diff --git a/platform/ios/platform/ios/app/Settings.bundle/Base.lproj/Root.strings b/platform/ios/app/Settings.bundle/Base.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/Base.lproj/Root.strings rename to platform/ios/app/Settings.bundle/Base.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/Root.plist b/platform/ios/app/Settings.bundle/Root.plist similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/Root.plist rename to platform/ios/app/Settings.bundle/Root.plist diff --git a/platform/ios/platform/ios/app/Settings.bundle/ar.lproj/Root.strings b/platform/ios/app/Settings.bundle/ar.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/ar.lproj/Root.strings rename to platform/ios/app/Settings.bundle/ar.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/bg.lproj/Root.strings b/platform/ios/app/Settings.bundle/bg.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/bg.lproj/Root.strings rename to platform/ios/app/Settings.bundle/bg.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/ca.lproj/Root.strings b/platform/ios/app/Settings.bundle/ca.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/ca.lproj/Root.strings rename to platform/ios/app/Settings.bundle/ca.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/cs.lproj/Root.strings b/platform/ios/app/Settings.bundle/cs.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/cs.lproj/Root.strings rename to platform/ios/app/Settings.bundle/cs.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/da.lproj/Root.strings b/platform/ios/app/Settings.bundle/da.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/da.lproj/Root.strings rename to platform/ios/app/Settings.bundle/da.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/de.lproj/Root.strings b/platform/ios/app/Settings.bundle/de.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/de.lproj/Root.strings rename to platform/ios/app/Settings.bundle/de.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/en.lproj/Root.strings b/platform/ios/app/Settings.bundle/en.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/en.lproj/Root.strings rename to platform/ios/app/Settings.bundle/en.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/es.lproj/Root.strings b/platform/ios/app/Settings.bundle/es.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/es.lproj/Root.strings rename to platform/ios/app/Settings.bundle/es.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/fi.lproj/Root.strings b/platform/ios/app/Settings.bundle/fi.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/fi.lproj/Root.strings rename to platform/ios/app/Settings.bundle/fi.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/fr.lproj/Root.strings b/platform/ios/app/Settings.bundle/fr.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/fr.lproj/Root.strings rename to platform/ios/app/Settings.bundle/fr.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/gl.lproj/Root.strings b/platform/ios/app/Settings.bundle/gl.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/gl.lproj/Root.strings rename to platform/ios/app/Settings.bundle/gl.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/he.lproj/Root.strings b/platform/ios/app/Settings.bundle/he.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/he.lproj/Root.strings rename to platform/ios/app/Settings.bundle/he.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/hu.lproj/Root.strings b/platform/ios/app/Settings.bundle/hu.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/hu.lproj/Root.strings rename to platform/ios/app/Settings.bundle/hu.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/it.lproj/Root.strings b/platform/ios/app/Settings.bundle/it.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/it.lproj/Root.strings rename to platform/ios/app/Settings.bundle/it.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/ko.lproj/Root.strings b/platform/ios/app/Settings.bundle/ko.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/ko.lproj/Root.strings rename to platform/ios/app/Settings.bundle/ko.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/lt.lproj/Root.strings b/platform/ios/app/Settings.bundle/lt.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/lt.lproj/Root.strings rename to platform/ios/app/Settings.bundle/lt.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/nl.lproj/Root.strings b/platform/ios/app/Settings.bundle/nl.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/nl.lproj/Root.strings rename to platform/ios/app/Settings.bundle/nl.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/pl.lproj/Root.strings b/platform/ios/app/Settings.bundle/pl.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/pl.lproj/Root.strings rename to platform/ios/app/Settings.bundle/pl.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/pt-BR.lproj/Root.strings b/platform/ios/app/Settings.bundle/pt-BR.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/pt-BR.lproj/Root.strings rename to platform/ios/app/Settings.bundle/pt-BR.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/pt-PT.lproj/Root.strings b/platform/ios/app/Settings.bundle/pt-PT.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/pt-PT.lproj/Root.strings rename to platform/ios/app/Settings.bundle/pt-PT.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/ru.lproj/Root.strings b/platform/ios/app/Settings.bundle/ru.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/ru.lproj/Root.strings rename to platform/ios/app/Settings.bundle/ru.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/sv.lproj/Root.strings b/platform/ios/app/Settings.bundle/sv.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/sv.lproj/Root.strings rename to platform/ios/app/Settings.bundle/sv.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/uk.lproj/Root.strings b/platform/ios/app/Settings.bundle/uk.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/uk.lproj/Root.strings rename to platform/ios/app/Settings.bundle/uk.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/vi.lproj/Root.strings b/platform/ios/app/Settings.bundle/vi.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/vi.lproj/Root.strings rename to platform/ios/app/Settings.bundle/vi.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/zh-Hans.lproj/Root.strings b/platform/ios/app/Settings.bundle/zh-Hans.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/zh-Hans.lproj/Root.strings rename to platform/ios/app/Settings.bundle/zh-Hans.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/Settings.bundle/zh-Hant.lproj/Root.strings b/platform/ios/app/Settings.bundle/zh-Hant.lproj/Root.strings similarity index 100% rename from platform/ios/platform/ios/app/Settings.bundle/zh-Hant.lproj/Root.strings rename to platform/ios/app/Settings.bundle/zh-Hant.lproj/Root.strings diff --git a/platform/ios/platform/ios/app/ar.lproj/Localizable.strings b/platform/ios/app/ar.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/ar.lproj/Localizable.strings rename to platform/ios/app/ar.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/bg.lproj/Localizable.strings b/platform/ios/app/bg.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/bg.lproj/Localizable.strings rename to platform/ios/app/bg.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/ca.lproj/Localizable.strings b/platform/ios/app/ca.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/ca.lproj/Localizable.strings rename to platform/ios/app/ca.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/cs.lproj/Localizable.strings b/platform/ios/app/cs.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/cs.lproj/Localizable.strings rename to platform/ios/app/cs.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/da.lproj/Localizable.strings b/platform/ios/app/da.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/da.lproj/Localizable.strings rename to platform/ios/app/da.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/de.lproj/Localizable.strings b/platform/ios/app/de.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/de.lproj/Localizable.strings rename to platform/ios/app/de.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/es.lproj/Localizable.strings b/platform/ios/app/es.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/es.lproj/Localizable.strings rename to platform/ios/app/es.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/fi.lproj/Localizable.strings b/platform/ios/app/fi.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/fi.lproj/Localizable.strings rename to platform/ios/app/fi.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/fill_filter_style.json b/platform/ios/app/fill_filter_style.json similarity index 100% rename from platform/ios/platform/ios/app/fill_filter_style.json rename to platform/ios/app/fill_filter_style.json diff --git a/platform/ios/platform/ios/app/fr.lproj/Localizable.strings b/platform/ios/app/fr.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/fr.lproj/Localizable.strings rename to platform/ios/app/fr.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/gl.lproj/Localizable.strings b/platform/ios/app/gl.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/gl.lproj/Localizable.strings rename to platform/ios/app/gl.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/he.lproj/Localizable.strings b/platform/ios/app/he.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/he.lproj/Localizable.strings rename to platform/ios/app/he.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/hu.lproj/Localizable.strings b/platform/ios/app/hu.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/hu.lproj/Localizable.strings rename to platform/ios/app/hu.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/insert_access_token.sh b/platform/ios/app/insert_access_token.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/app/insert_access_token.sh rename to platform/ios/app/insert_access_token.sh diff --git a/platform/ios/platform/ios/app/ja.lproj/Localizable.strings b/platform/ios/app/ja.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/ja.lproj/Localizable.strings rename to platform/ios/app/ja.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/ko.lproj/Localizable.strings b/platform/ios/app/ko.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/ko.lproj/Localizable.strings rename to platform/ios/app/ko.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/line_filter_style.json b/platform/ios/app/line_filter_style.json similarity index 100% rename from platform/ios/platform/ios/app/line_filter_style.json rename to platform/ios/app/line_filter_style.json diff --git a/platform/ios/platform/ios/app/lt.lproj/Localizable.strings b/platform/ios/app/lt.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/lt.lproj/Localizable.strings rename to platform/ios/app/lt.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/main.m b/platform/ios/app/main.m similarity index 100% rename from platform/ios/platform/ios/app/main.m rename to platform/ios/app/main.m diff --git a/platform/ios/platform/ios/app/missing_icon.json b/platform/ios/app/missing_icon.json similarity index 100% rename from platform/ios/platform/ios/app/missing_icon.json rename to platform/ios/app/missing_icon.json diff --git a/platform/ios/platform/ios/app/nl.lproj/Localizable.strings b/platform/ios/app/nl.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/nl.lproj/Localizable.strings rename to platform/ios/app/nl.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/numeric_filter_style.json b/platform/ios/app/numeric_filter_style.json similarity index 100% rename from platform/ios/platform/ios/app/numeric_filter_style.json rename to platform/ios/app/numeric_filter_style.json diff --git a/platform/ios/platform/ios/app/pl.lproj/Localizable.strings b/platform/ios/app/pl.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/pl.lproj/Localizable.strings rename to platform/ios/app/pl.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/points.geojson b/platform/ios/app/points.geojson similarity index 100% rename from platform/ios/platform/ios/app/points.geojson rename to platform/ios/app/points.geojson diff --git a/platform/ios/platform/ios/app/polyline.geojson b/platform/ios/app/polyline.geojson similarity index 100% rename from platform/ios/platform/ios/app/polyline.geojson rename to platform/ios/app/polyline.geojson diff --git a/platform/ios/platform/ios/app/pt-BR.lproj/Localizable.strings b/platform/ios/app/pt-BR.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/pt-BR.lproj/Localizable.strings rename to platform/ios/app/pt-BR.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/pt-PT.lproj/Localizable.strings b/platform/ios/app/pt-PT.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/pt-PT.lproj/Localizable.strings rename to platform/ios/app/pt-PT.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/ru.lproj/Localizable.strings b/platform/ios/app/ru.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/ru.lproj/Localizable.strings rename to platform/ios/app/ru.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/simple_route.json b/platform/ios/app/simple_route.json similarity index 94% rename from platform/ios/platform/ios/app/simple_route.json rename to platform/ios/app/simple_route.json index 8b910dbda..3c3a75a49 100644 --- a/platform/ios/platform/ios/app/simple_route.json +++ b/platform/ios/app/simple_route.json @@ -1,184 +1,184 @@ -{ - "coordinates":[ - [ - -122.39899, - 37.787357 - ], - [ - -122.398818, - 37.78722 - ], - [ - -122.398794, - 37.7872 - ], - [ - -122.398259, - 37.786773 - ], - [ - -122.398984, - 37.786206 - ], - [ - -122.399053, - 37.786151 - ], - [ - -122.399379, - 37.785888 - ], - [ - -122.399614, - 37.785697 - ], - [ - -122.399884, - 37.785478 - ], - [ - -122.400382, - 37.78509 - ], - [ - -122.400478, - 37.785015 - ], - [ - -122.400599, - 37.785111 - ], - [ - -122.4012, - 37.785587 - ], - [ - -122.401495, - 37.785825 - ], - [ - -122.401705, - 37.785993 - ], - [ - -122.402041, - 37.786261 - ], - [ - -122.402476, - 37.786603 - ], - [ - -122.402573, - 37.78668 - ], - [ - -122.403019, - 37.787031 - ], - [ - -122.403315, - 37.78728 - ], - [ - -122.403358, - 37.787324 - ], - [ - -122.403382, - 37.787356 - ], - [ - -122.403398, - 37.787392 - ], - [ - -122.403405, - 37.787425 - ], - [ - -122.403415, - 37.787486 - ], - [ - -122.403434, - 37.787654 - ], - [ - -122.403436, - 37.787676 - ], - [ - -122.40344, - 37.787698 - ], - [ - -122.403444, - 37.787729 - ], - [ - -122.403464, - 37.787825 - ], - [ - -122.403476, - 37.787877 - ], - [ - -122.403497, - 37.787965 - ], - [ - -122.403591, - 37.788436 - ], - [ - -122.403684, - 37.788901 - ], - [ - -122.403774, - 37.789349 - ], - [ - -122.403798, - 37.789469 - ], - [ - -122.403872, - 37.789833 - ], - [ - -122.404232, - 37.789788 - ], - [ - -122.405435, - 37.789635 - ], - [ - -122.406, - 37.789562 - ], - [ - -122.406982, - 37.789436 - ], - [ - -122.407475, - 37.789373 - ], - [ - -122.408599, - 37.789231 - ], - [ - -122.408616, - 37.789229 - ], - [ - -122.408451, - 37.788454 - ] - ] +{ + "coordinates":[ + [ + -122.39899, + 37.787357 + ], + [ + -122.398818, + 37.78722 + ], + [ + -122.398794, + 37.7872 + ], + [ + -122.398259, + 37.786773 + ], + [ + -122.398984, + 37.786206 + ], + [ + -122.399053, + 37.786151 + ], + [ + -122.399379, + 37.785888 + ], + [ + -122.399614, + 37.785697 + ], + [ + -122.399884, + 37.785478 + ], + [ + -122.400382, + 37.78509 + ], + [ + -122.400478, + 37.785015 + ], + [ + -122.400599, + 37.785111 + ], + [ + -122.4012, + 37.785587 + ], + [ + -122.401495, + 37.785825 + ], + [ + -122.401705, + 37.785993 + ], + [ + -122.402041, + 37.786261 + ], + [ + -122.402476, + 37.786603 + ], + [ + -122.402573, + 37.78668 + ], + [ + -122.403019, + 37.787031 + ], + [ + -122.403315, + 37.78728 + ], + [ + -122.403358, + 37.787324 + ], + [ + -122.403382, + 37.787356 + ], + [ + -122.403398, + 37.787392 + ], + [ + -122.403405, + 37.787425 + ], + [ + -122.403415, + 37.787486 + ], + [ + -122.403434, + 37.787654 + ], + [ + -122.403436, + 37.787676 + ], + [ + -122.40344, + 37.787698 + ], + [ + -122.403444, + 37.787729 + ], + [ + -122.403464, + 37.787825 + ], + [ + -122.403476, + 37.787877 + ], + [ + -122.403497, + 37.787965 + ], + [ + -122.403591, + 37.788436 + ], + [ + -122.403684, + 37.788901 + ], + [ + -122.403774, + 37.789349 + ], + [ + -122.403798, + 37.789469 + ], + [ + -122.403872, + 37.789833 + ], + [ + -122.404232, + 37.789788 + ], + [ + -122.405435, + 37.789635 + ], + [ + -122.406, + 37.789562 + ], + [ + -122.406982, + 37.789436 + ], + [ + -122.407475, + 37.789373 + ], + [ + -122.408599, + 37.789231 + ], + [ + -122.408616, + 37.789229 + ], + [ + -122.408451, + 37.788454 + ] + ] } \ No newline at end of file diff --git a/platform/ios/platform/ios/app/sv.lproj/Localizable.strings b/platform/ios/app/sv.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/sv.lproj/Localizable.strings rename to platform/ios/app/sv.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/threestates.geojson b/platform/ios/app/threestates.geojson similarity index 100% rename from platform/ios/platform/ios/app/threestates.geojson rename to platform/ios/app/threestates.geojson diff --git a/platform/ios/platform/ios/app/uk.lproj/Localizable.strings b/platform/ios/app/uk.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/uk.lproj/Localizable.strings rename to platform/ios/app/uk.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/vi.lproj/Localizable.strings b/platform/ios/app/vi.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/vi.lproj/Localizable.strings rename to platform/ios/app/vi.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/zh-Hans.lproj/Localizable.strings b/platform/ios/app/zh-Hans.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/zh-Hans.lproj/Localizable.strings rename to platform/ios/app/zh-Hans.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/app/zh-Hant.lproj/Localizable.strings b/platform/ios/app/zh-Hant.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/app/zh-Hant.lproj/Localizable.strings rename to platform/ios/app/zh-Hant.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/Base.lproj/Localizable.strings b/platform/ios/bazel/BUILD.bazel similarity index 100% rename from platform/ios/platform/macos/app/Base.lproj/Localizable.strings rename to platform/ios/bazel/BUILD.bazel diff --git a/platform/ios/bazel/files.bzl b/platform/ios/bazel/files.bzl new file mode 100644 index 000000000..de4db5fd5 --- /dev/null +++ b/platform/ios/bazel/files.bzl @@ -0,0 +1,104 @@ +MLN_IOS_SDK_HEADERS = [ + "src/MLNAnnotationImage.h", + "src/MLNAnnotationView.h", + "src/MLNCalloutView.h", + "src/MLNCameraChangeReason.h", + "src/MLNCompassButton.h", + "src/MLNMapProjection.h", + "src/MLNMapView+IBAdditions.h", + "src/MLNMapViewDelegate.h", + "src/MLNMapView.h", + "src/MLNUserLocation.h", + "src/MLNUserLocationAnnotationView.h", + "src/MLNUserLocationAnnotationViewStyle.h", +] + +MLN_IOS_PUBLIC_HEADERS = [ + "src/MLNAnnotationContainerView.h", + "src/MLNCompactCalloutView.h", + "src/MLNFaux3DUserLocationAnnotationView.h", + "src/MLNMapAccessibilityElement.h", + "src/MLNMapView+Impl.h", + "src/MLNMapView+OpenGL.h", + "src/MLNScaleBar.h", + "src/MLNUserLocationHeadingArrowLayer.h", + "src/MLNUserLocationHeadingBeamLayer.h", + "src/MLNUserLocationHeadingIndicator.h", + "src/Mapbox.h", + "src/NSOrthography+MLNAdditions.h", + "src/UIColor+MLNAdditions.h", + "src/UIDevice+MLNAdditions.h", + "src/UIImage+MLNAdditions.h", + "src/UIView+MLNAdditions.h", + "src/UIViewController+MLNAdditions.h", +] + +MLN_IOS_PRIVATE_HEADERS = [ + "src/MLNAnnotationContainerView_Private.h", + "src/MLNAnnotationImage_Private.h", + "src/MLNAnnotationView_Private.h", + "src/MLNCompassButton_Private.h", + "src/MLNMapView_Private.h", + "src/MLNUserLocationAnnotationView_Private.h", + "src/MLNUserLocation_Private.h", +] + +MLN_IOS_PUBLIC_OBJC_SOURCE = [ + "src/MLNAnnotationContainerView.m", + "src/MLNAnnotationImage.m", + "src/MLNCompactCalloutView.m", + "src/MLNUserLocation.m", + "src/MLNUserLocationAnnotationView.m", + "src/MLNUserLocationAnnotationViewStyle.m", + "src/MLNUserLocationHeadingArrowLayer.m", + "src/MLNUserLocationHeadingBeamLayer.m", + "src/NSOrthography+MLNAdditions.m", + "src/UIDevice+MLNAdditions.m", + "src/UIView+MLNAdditions.m", + "src/UIViewController+MLNAdditions.m", +] + +MLN_IOS_PUBLIC_OBJCPP_SOURCE = [ + "src/MLNAnnotationView.mm", + "src/MLNCompassButton.mm", + "src/MLNFaux3DUserLocationAnnotationView.mm", + "src/MLNMapAccessibilityElement.mm", + "src/MLNMapProjection.mm", + "src/MLNMapView.mm", + "src/MLNMapView+Impl.mm", + "src/MLNMapView+OpenGL.mm", + "src/MLNScaleBar.mm", + "src/UIColor+MLNAdditions.mm", + "src/UIImage+MLNAdditions.mm", +] + +MLN_PUBLIC_IOS_APP_SOPURCE = [ + "app/MBXAnnotationView.m", + "app/MBXAppDelegate.m", + "app/MBXCustomCalloutView.h", + "app/MBXCustomCalloutView.m", + "app/MBXCustomLocationViewController.m", + "app/MBXEmbeddedMapViewController.m", + "app/MBXFrameTimeGraphView.m", + "app/MBXOfflinePacksTableViewController.m", + "app/MBXOrnamentsViewController.m", + "app/MBXSnapshotsViewController.m", + "app/MBXState.m", + "app/MBXStateManager.m", + "app/MBXUserLocationAnnotationView.m", + "app/MBXViewController.m", + "app/main.m", + "app/MBXAnnotationView.h", + "app/MBXAppDelegate.h", + "app/MBXCustomLocationViewController.h", + "app/MBXEmbeddedMapViewController.h", + "app/MBXFrameTimeGraphView.h", + "app/MBXOfflinePacksTableViewController.h", + "app/MBXOrnamentsViewController.h", + "app/MBXSnapshotsViewController.h", + "app/MBXState.h", + "app/MBXStateManager.h", + "app/MBXUserLocationAnnotationView.h", + "app/MBXViewController.h", + "app/MLNMapView_Experimental.h", +] diff --git a/platform/ios/bazel/provisioning.bzl b/platform/ios/bazel/provisioning.bzl new file mode 100644 index 000000000..91e2141e0 --- /dev/null +++ b/platform/ios/bazel/provisioning.bzl @@ -0,0 +1,17 @@ +load("@build_bazel_rules_apple//apple:apple.bzl", "local_provisioning_profile") +load("@rules_xcodeproj//xcodeproj:defs.bzl", "xcode_provisioning_profile") +load("config.bzl", "APPLE_MOBILE_PROVISIONING_PROFILE_NAME", "APPLE_MOBILE_PROVISIONING_PROFILE_TEAM_ID") + +def configure_device_profiles(): + local_provisioning_profile( + name = "provisioning_profile", + profile_name = APPLE_MOBILE_PROVISIONING_PROFILE_NAME, + team_id = APPLE_MOBILE_PROVISIONING_PROFILE_TEAM_ID, + ) + + xcode_provisioning_profile( + name = "xcode_profile", + managed_by_xcode = True, + provisioning_profile = ":provisioning_profile", + visibility = ["//visibility:public"], + ) diff --git a/platform/ios/platform/ios/bench UITests/Info.plist b/platform/ios/bench_UITests/Info.plist similarity index 100% rename from platform/ios/platform/ios/bench UITests/Info.plist rename to platform/ios/bench_UITests/Info.plist diff --git a/platform/ios/platform/ios/bench UITests/bench_UITests.swift b/platform/ios/bench_UITests/bench_UITests.swift similarity index 100% rename from platform/ios/platform/ios/bench UITests/bench_UITests.swift rename to platform/ios/bench_UITests/bench_UITests.swift diff --git a/platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Contents.json b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Contents.json rename to platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-1.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-1.png similarity index 100% rename from platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-1.png rename to platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-1.png diff --git a/platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-2.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-2.png similarity index 100% rename from platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-2.png rename to platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-2.png diff --git a/platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-3.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-3.png similarity index 100% rename from platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-3.png rename to platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-3.png diff --git a/platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-4.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-4.png similarity index 100% rename from platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-4.png rename to platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-4.png diff --git a/platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40.png similarity index 100% rename from platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40.png rename to platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40.png diff --git a/platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png similarity index 100% rename from platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png rename to platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png diff --git a/platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png similarity index 100% rename from platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png rename to platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png diff --git a/platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76.png similarity index 100% rename from platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76.png rename to platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76.png diff --git a/platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png similarity index 100% rename from platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png rename to platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png diff --git a/platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small.png similarity index 100% rename from platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small.png rename to platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small.png diff --git a/platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png similarity index 100% rename from platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png rename to platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png diff --git a/platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png similarity index 100% rename from platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png rename to platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png diff --git a/platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon.png similarity index 100% rename from platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon.png rename to platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/Icon.png diff --git a/platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png similarity index 100% rename from platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png rename to platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork.png diff --git a/platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png b/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png similarity index 100% rename from platform/ios/platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png rename to platform/ios/benchmark/Assets.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png diff --git a/platform/ios/platform/ios/benchmark/Base.lproj/LaunchScreen.storyboard b/platform/ios/benchmark/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from platform/ios/platform/ios/benchmark/Base.lproj/LaunchScreen.storyboard rename to platform/ios/benchmark/Base.lproj/LaunchScreen.storyboard diff --git a/platform/ios/platform/ios/benchmark/Info.plist b/platform/ios/benchmark/Info.plist similarity index 100% rename from platform/ios/platform/ios/benchmark/Info.plist rename to platform/ios/benchmark/Info.plist diff --git a/platform/ios/platform/ios/benchmark/MBXBenchAppDelegate.h b/platform/ios/benchmark/MBXBenchAppDelegate.h similarity index 100% rename from platform/ios/platform/ios/benchmark/MBXBenchAppDelegate.h rename to platform/ios/benchmark/MBXBenchAppDelegate.h diff --git a/platform/ios/platform/ios/benchmark/MBXBenchAppDelegate.m b/platform/ios/benchmark/MBXBenchAppDelegate.m similarity index 100% rename from platform/ios/platform/ios/benchmark/MBXBenchAppDelegate.m rename to platform/ios/benchmark/MBXBenchAppDelegate.m diff --git a/platform/ios/platform/ios/benchmark/MBXBenchViewController.h b/platform/ios/benchmark/MBXBenchViewController.h similarity index 100% rename from platform/ios/platform/ios/benchmark/MBXBenchViewController.h rename to platform/ios/benchmark/MBXBenchViewController.h diff --git a/platform/ios/platform/ios/benchmark/MBXBenchViewController.mm b/platform/ios/benchmark/MBXBenchViewController.mm similarity index 100% rename from platform/ios/platform/ios/benchmark/MBXBenchViewController.mm rename to platform/ios/benchmark/MBXBenchViewController.mm diff --git a/platform/ios/platform/ios/benchmark/assets/download.sh b/platform/ios/benchmark/assets/download.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/benchmark/assets/download.sh rename to platform/ios/benchmark/assets/download.sh diff --git a/platform/ios/platform/ios/benchmark/assets/glyphs/download.sh b/platform/ios/benchmark/assets/glyphs/download.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/benchmark/assets/glyphs/download.sh rename to platform/ios/benchmark/assets/glyphs/download.sh diff --git a/platform/ios/platform/ios/benchmark/assets/readme.txt b/platform/ios/benchmark/assets/readme.txt similarity index 100% rename from platform/ios/platform/ios/benchmark/assets/readme.txt rename to platform/ios/benchmark/assets/readme.txt diff --git a/platform/ios/platform/ios/benchmark/assets/sprites/sprite.json b/platform/ios/benchmark/assets/sprites/sprite.json similarity index 100% rename from platform/ios/platform/ios/benchmark/assets/sprites/sprite.json rename to platform/ios/benchmark/assets/sprites/sprite.json diff --git a/platform/ios/platform/ios/benchmark/assets/sprites/sprite.png b/platform/ios/benchmark/assets/sprites/sprite.png similarity index 100% rename from platform/ios/platform/ios/benchmark/assets/sprites/sprite.png rename to platform/ios/benchmark/assets/sprites/sprite.png diff --git a/platform/ios/platform/ios/benchmark/assets/sprites/sprite@2x.json b/platform/ios/benchmark/assets/sprites/sprite@2x.json similarity index 100% rename from platform/ios/platform/ios/benchmark/assets/sprites/sprite@2x.json rename to platform/ios/benchmark/assets/sprites/sprite@2x.json diff --git a/platform/ios/platform/ios/benchmark/assets/sprites/sprite@2x.png b/platform/ios/benchmark/assets/sprites/sprite@2x.png similarity index 100% rename from platform/ios/platform/ios/benchmark/assets/sprites/sprite@2x.png rename to platform/ios/benchmark/assets/sprites/sprite@2x.png diff --git a/platform/ios/platform/ios/benchmark/assets/styles/streets.json b/platform/ios/benchmark/assets/styles/streets.json similarity index 100% rename from platform/ios/platform/ios/benchmark/assets/styles/streets.json rename to platform/ios/benchmark/assets/styles/streets.json diff --git a/platform/ios/platform/ios/benchmark/assets/tiles/download.sh b/platform/ios/benchmark/assets/tiles/download.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/benchmark/assets/tiles/download.sh rename to platform/ios/benchmark/assets/tiles/download.sh diff --git a/platform/ios/platform/ios/benchmark/assets/tiles/openmaptiles.json b/platform/ios/benchmark/assets/tiles/openmaptiles.json similarity index 100% rename from platform/ios/platform/ios/benchmark/assets/tiles/openmaptiles.json rename to platform/ios/benchmark/assets/tiles/openmaptiles.json diff --git a/platform/ios/platform/ios/benchmark/insert_access_token.sh b/platform/ios/benchmark/insert_access_token.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/benchmark/insert_access_token.sh rename to platform/ios/benchmark/insert_access_token.sh diff --git a/platform/ios/platform/ios/benchmark/locations.cpp b/platform/ios/benchmark/locations.cpp similarity index 100% rename from platform/ios/platform/ios/benchmark/locations.cpp rename to platform/ios/benchmark/locations.cpp diff --git a/platform/ios/platform/ios/benchmark/locations.hpp b/platform/ios/benchmark/locations.hpp similarity index 100% rename from platform/ios/platform/ios/benchmark/locations.hpp rename to platform/ios/benchmark/locations.hpp diff --git a/platform/ios/platform/ios/benchmark/main.m b/platform/ios/benchmark/main.m similarity index 100% rename from platform/ios/platform/ios/benchmark/main.m rename to platform/ios/benchmark/main.m diff --git a/platform/ios/ccache-c.in b/platform/ios/ccache-c.in deleted file mode 100644 index f75d456e5..000000000 --- a/platform/ios/ccache-c.in +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -# Xcode generator doesn't include the compiler as the -# first argument, Ninja and Makefiles do. Handle both cases. -if [[ "$1" = "${CMAKE_C_COMPILER}" ]] ; then - shift -fi - -exec "${C_LAUNCHER}" "${CMAKE_C_COMPILER}" "$@" diff --git a/platform/ios/ccache-cxx.in b/platform/ios/ccache-cxx.in deleted file mode 100644 index 81831ad4d..000000000 --- a/platform/ios/ccache-cxx.in +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -# Xcode generator doesn't include the compiler as the -# first argument, Ninja and Makefiles do. Handle both cases. -if [[ "$1" = "${CMAKE_CXX_COMPILER}" ]] ; then - shift -fi - -exec "${CXX_LAUNCHER}" "${CMAKE_CXX_COMPILER}" "$@" diff --git a/platform/ios/ccache.cmake b/platform/ios/ccache.cmake deleted file mode 100644 index ff9537731..000000000 --- a/platform/ios/ccache.cmake +++ /dev/null @@ -1,27 +0,0 @@ -find_program(CCACHE_PROGRAM ccache) -if(CCACHE_PROGRAM) - # Set up wrapper scripts - set(C_LAUNCHER "${CCACHE_PROGRAM}") - set(CXX_LAUNCHER "${CCACHE_PROGRAM}") - configure_file(${PROJECT_SOURCE_DIR}/platform/ios/ccache-c.in ${CMAKE_BINARY_DIR}/ccache-c) - configure_file(${PROJECT_SOURCE_DIR}/platform/ios/ccache-cxx.in ${CMAKE_BINARY_DIR}/ccache-cxx) - execute_process( - COMMAND - chmod - a+rx - "${CMAKE_BINARY_DIR}/ccache-c" - "${CMAKE_BINARY_DIR}/ccache-cxx" - ) - - if(CMAKE_GENERATOR STREQUAL "Xcode") - # Set Xcode project attributes to route compilation and linking through our scripts - set(CMAKE_XCODE_ATTRIBUTE_CC "${CMAKE_BINARY_DIR}/ccache-c") - set(CMAKE_XCODE_ATTRIBUTE_CXX "${CMAKE_BINARY_DIR}/ccache-cxx") - set(CMAKE_XCODE_ATTRIBUTE_LD "${CMAKE_BINARY_DIR}/ccache-c") - set(CMAKE_XCODE_ATTRIBUTE_LDPLUSPLUS "${CMAKE_BINARY_DIR}/ccache-cxx") - else() - # Support Unix Makefiles and Ninja - set(CMAKE_C_COMPILER_LAUNCHER "${CMAKE_BINARY_DIR}/ccache-c") - set(CMAKE_CXX_COMPILER_LAUNCHER "${CMAKE_BINARY_DIR}/ccache-cxx") - endif() -endif() diff --git a/platform/ios/platform/ios/core-files.json b/platform/ios/core-files.json similarity index 100% rename from platform/ios/platform/ios/core-files.json rename to platform/ios/core-files.json diff --git a/platform/ios/platform/ios/docs/guides/Gesture Recognizers.md b/platform/ios/docs/guides/Gesture Recognizers.md similarity index 100% rename from platform/ios/platform/ios/docs/guides/Gesture Recognizers.md rename to platform/ios/docs/guides/Gesture Recognizers.md diff --git a/platform/ios/platform/ios/docs/guides/Info.plist Keys.md b/platform/ios/docs/guides/Info.plist Keys.md similarity index 100% rename from platform/ios/platform/ios/docs/guides/Info.plist Keys.md rename to platform/ios/docs/guides/Info.plist Keys.md diff --git a/platform/ios/platform/ios/docs/img/screenshot.png b/platform/ios/docs/img/screenshot.png similarity index 100% rename from platform/ios/platform/ios/docs/img/screenshot.png rename to platform/ios/docs/img/screenshot.png diff --git a/platform/ios/platform/ios/docs/img/user-interaction/RotateSydney.gif b/platform/ios/docs/img/user-interaction/RotateSydney.gif similarity index 100% rename from platform/ios/platform/ios/docs/img/user-interaction/RotateSydney.gif rename to platform/ios/docs/img/user-interaction/RotateSydney.gif diff --git a/platform/ios/platform/ios/docs/img/user-interaction/quickzoom.gif b/platform/ios/docs/img/user-interaction/quickzoom.gif similarity index 100% rename from platform/ios/platform/ios/docs/img/user-interaction/quickzoom.gif rename to platform/ios/docs/img/user-interaction/quickzoom.gif diff --git a/platform/ios/platform/ios/docs/pod-README.md b/platform/ios/docs/pod-README.md similarity index 100% rename from platform/ios/platform/ios/docs/pod-README.md rename to platform/ios/docs/pod-README.md diff --git a/platform/ios/platform/ios/framework/Info-static.plist b/platform/ios/framework/Info-static.plist similarity index 100% rename from platform/ios/platform/ios/framework/Info-static.plist rename to platform/ios/framework/Info-static.plist diff --git a/platform/ios/platform/ios/framework/Info.plist b/platform/ios/framework/Info.plist similarity index 100% rename from platform/ios/platform/ios/framework/Info.plist rename to platform/ios/framework/Info.plist diff --git a/platform/ios/platform/ios/framework/Mapbox-static.h b/platform/ios/framework/Mapbox-static.h similarity index 100% rename from platform/ios/platform/ios/framework/Mapbox-static.h rename to platform/ios/framework/Mapbox-static.h diff --git a/platform/ios/platform/ios/framework/modulemap b/platform/ios/framework/modulemap similarity index 100% rename from platform/ios/platform/ios/framework/modulemap rename to platform/ios/framework/modulemap diff --git a/platform/ios/platform/ios/framework/strip-frameworks.sh b/platform/ios/framework/strip-frameworks.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/framework/strip-frameworks.sh rename to platform/ios/framework/strip-frameworks.sh diff --git a/platform/ios/ios-test-runners.cmake b/platform/ios/ios-test-runners.cmake deleted file mode 100644 index 94d2ad7bd..000000000 --- a/platform/ios/ios-test-runners.cmake +++ /dev/null @@ -1,223 +0,0 @@ -if(MLN_IOS_RENDER_TEST) - include(${PROJECT_SOURCE_DIR}/vendor/zip-archive.cmake) - initialize_ios_target(mbgl-vendor-zip-archive) - - if(MLN_WITH_OPENGL) - message(STATUS "Setting up test data for iOS render test with OpenGL renderer") - set(PREPARE_CMD "${PROJECT_SOURCE_DIR}/render-test/ios/setup_test_data.sh") - endif() - add_custom_target(RenderTestApp-prepare COMMAND ${PREPARE_CMD} ${CMAKE_CURRENT_BINARY_DIR} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) - - execute_process(COMMAND mkdir ${CMAKE_CURRENT_BINARY_DIR}/test-data RESULT_VARIABLE CMD_ERROR WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) - - set(RESOURCES ${PROJECT_SOURCE_DIR}/platform/ios/test/common/Main.storyboard - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/LaunchScreen.storyboard ${CMAKE_CURRENT_BINARY_DIR}/test-data) - - add_executable( - RenderTestApp - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/ios_test_runner.hpp - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/AppDelegate.h - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/AppDelegate.m - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/main.m - ${PROJECT_SOURCE_DIR}/render-test/ios/ios_test_runner.cpp - ${PROJECT_SOURCE_DIR}/render-test/ios/iosTestRunner.h - ${PROJECT_SOURCE_DIR}/render-test/ios/iosTestRunner.mm - ${RESOURCES} - ) - initialize_ios_target(RenderTestApp) - add_dependencies(RenderTestApp RenderTestApp-prepare) - - set_target_properties( - RenderTestApp - PROPERTIES - MACOSX_BUNDLE - TRUE - MACOSX_BUNDLE_IDENTIFIER - com.mapbox.RenderTestAPP - MACOSX_BUNDLE_INFO_PLIST - ${PROJECT_SOURCE_DIR}/render-test/ios/Info.plist - RESOURCE - "${RESOURCES}" - ) - - target_include_directories( - RenderTestApp - PUBLIC {PROJECT_SOURCE_DIR}/render-test/include ${PROJECT_SOURCE_DIR}/include - ) - - target_include_directories( - RenderTestApp - PRIVATE - ${PROJECT_SOURCE_DIR}/platform/darwin/src - ${PROJECT_SOURCE_DIR}/platform/darwin/include - ${PROJECT_SOURCE_DIR}/platform/darwin/include/mbgl/interface/ - ${PROJECT_SOURCE_DIR}/platform/default/include - ${PROJECT_SOURCE_DIR}/platform/ios/test/common - ${PROJECT_SOURCE_DIR}/src - ) - - target_include_directories( - RenderTestApp - PUBLIC ${PROJECT_SOURCE_DIR}/render-test/ios - ) - - target_link_libraries( - RenderTestApp - PRIVATE mbgl-render-test mbgl-vendor-zip-archive - ) - - set_target_properties(RenderTestApp PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "") - set_target_properties(RenderTestApp PROPERTIES XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") - - find_package(XCTest REQUIRED) - - xctest_add_bundle(RenderTestAppTests RenderTestApp ${PROJECT_SOURCE_DIR}/render-test/ios/tests/Tests.m) - - target_include_directories( - RenderTestAppTests - PUBLIC ${PROJECT_SOURCE_DIR}/render-test/ios - ) - - xctest_add_test(XCTest.RenderTestApp RenderTestAppTests) - - set_target_properties(RenderTestAppTests PROPERTIES XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${IOS_DEPLOYMENT_TARGET}") - set_target_properties(RenderTestAppTests PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH $<$:YES>) - set_target_properties(RenderTestAppTests PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${PROJECT_SOURCE_DIR}/render-test/ios/tests/Info.plist) - set_target_properties(RenderTestAppTests PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "") - set_target_properties(RenderTestAppTests PROPERTIES XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") -endif() - -if(MLN_IOS_UNIT_TEST) - execute_process(COMMAND ditto ${PROJECT_SOURCE_DIR}/test/fixtures ${CMAKE_CURRENT_BINARY_DIR}/test-data/test/fixtures) - execute_process( - COMMAND - ditto ${PROJECT_SOURCE_DIR}/scripts/style-spec-reference - ${CMAKE_CURRENT_BINARY_DIR}/test-data/scripts/style-spec-reference - ) - - set(RESOURCES ${PROJECT_SOURCE_DIR}/platform/ios/test/common/Main.storyboard - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/LaunchScreen.storyboard ${CMAKE_CURRENT_BINARY_DIR}/test-data) - - add_executable( - UnitTestsApp - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/ios_test_runner.hpp - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/AppDelegate.h - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/AppDelegate.m - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/iosTestRunner.mm - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/main.m - ${PROJECT_SOURCE_DIR}/test/ios/ios_test_runner.cpp - ${PROJECT_SOURCE_DIR}/test/ios/iosTestRunner.h - ${RESOURCES} - ) - initialize_ios_target(UnitTestsApp) - - set_target_properties( - UnitTestsApp - PROPERTIES - MACOSX_BUNDLE - TRUE - MACOSX_BUNDLE_IDENTIFIER - com.mapbox.UnitTestsApp - MACOSX_BUNDLE_INFO_PLIST - ${PROJECT_SOURCE_DIR}/test/ios/Info.plist - RESOURCE - "${RESOURCES}" - ) - - target_include_directories( - UnitTestsApp - PUBLIC - ${PROJECT_SOURCE_DIR}/include - ${PROJECT_SOURCE_DIR}/platform/ios/test/common - ${PROJECT_SOURCE_DIR}/test/include - ${PROJECT_SOURCE_DIR}/test/ios - ) - - target_link_libraries( - UnitTestsApp - PRIVATE mbgl-compiler-options -Wl,-force_load mbgl-test - ) - - set_target_properties(UnitTestsApp PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "") - set_target_properties(UnitTestsApp PROPERTIES XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") - - find_package(XCTest REQUIRED) - - xctest_add_bundle(UnitTestsAppTests UnitTestsApp ${PROJECT_SOURCE_DIR}/platform/ios/test/common/Tests.m) - - target_include_directories( - UnitTestsAppTests - PUBLIC ${PROJECT_SOURCE_DIR}/test/ios - ) - - xctest_add_test(XCTest.UnitTestsApp UnitTestsAppTests) - - set_target_properties(UnitTestsAppTests PROPERTIES XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${IOS_DEPLOYMENT_TARGET}") - set_target_properties(UnitTestsAppTests PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH $<$:YES>) - set_target_properties(UnitTestsAppTests PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${PROJECT_SOURCE_DIR}/test/ios/tests/Info.plist) - set_target_properties(UnitTestsAppTests PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "") - set_target_properties(UnitTestsAppTests PROPERTIES XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") -endif() - -if(MLN_IOS_BENCHMARK) - execute_process(COMMAND ditto ${PROJECT_SOURCE_DIR}/benchmark/fixtures ${CMAKE_CURRENT_BINARY_DIR}/benchmark-data/benchmark/fixtures) - execute_process( - COMMAND - ditto ${PROJECT_SOURCE_DIR}/test/fixtures/api/assets/streets - ${CMAKE_CURRENT_BINARY_DIR}/benchmark-data/test/fixtures/api/assets/streets - ) - - set(RESOURCES ${PROJECT_SOURCE_DIR}/platform/ios/test/common/Main.storyboard - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/LaunchScreen.storyboard ${CMAKE_CURRENT_BINARY_DIR}/benchmark-data) - - add_executable( - BenchmarkApp - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/ios_test_runner.hpp - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/AppDelegate.h - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/AppDelegate.m - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/iosTestRunner.mm - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/main.m - ${PROJECT_SOURCE_DIR}/benchmark/ios/ios_test_runner.cpp - ${PROJECT_SOURCE_DIR}/benchmark/ios/iosTestRunner.h - ${RESOURCES} - ) - initialize_ios_target(BenchmarkApp) - - target_include_directories( - BenchmarkApp - PUBLIC - ${PROJECT_SOURCE_DIR}/include - ${PROJECT_SOURCE_DIR}/platform/ios/test/common - ${PROJECT_SOURCE_DIR}/benchmark/include - ${PROJECT_SOURCE_DIR}/benchmark/ios - ) - - target_link_libraries( - BenchmarkApp - PRIVATE mbgl-compiler-options -Wl,-force_load mbgl-benchmark - ) - - set_target_properties(BenchmarkApp PROPERTIES MACOSX_BUNDLE TRUE) - set_target_properties(BenchmarkApp PROPERTIES MACOSX_BUNDLE_IDENTIFIER com.mapbox.BenchmarkApp) - set_target_properties(BenchmarkApp PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${PROJECT_SOURCE_DIR}/benchmark/ios/Info.plist) - set_target_properties(BenchmarkApp PROPERTIES RESOURCE "${RESOURCES}") - set_target_properties(BenchmarkApp PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "") - set_target_properties(BenchmarkApp PROPERTIES XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") - - find_package(XCTest REQUIRED) - - xctest_add_bundle(BenchmarkAppTests BenchmarkApp ${PROJECT_SOURCE_DIR}/platform/ios/test/common/Tests.m) - - target_include_directories( - BenchmarkAppTests - PUBLIC ${PROJECT_SOURCE_DIR}/benchmark/ios - ) - - xctest_add_test(XCTest.BenchmarkApp BenchmarkAppTests) - - set_target_properties(BenchmarkAppTests PROPERTIES XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${IOS_DEPLOYMENT_TARGET}") - set_target_properties(BenchmarkAppTests PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH $<$:YES>) - set_target_properties(BenchmarkAppTests PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${PROJECT_SOURCE_DIR}/benchmark/ios/tests/Info.plist) - set_target_properties(BenchmarkAppTests PROPERTIES XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "") - set_target_properties(BenchmarkAppTests PROPERTIES XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") -endif() diff --git a/platform/ios/ios.cmake b/platform/ios/ios.cmake deleted file mode 100644 index 0b6b760cb..000000000 --- a/platform/ios/ios.cmake +++ /dev/null @@ -1,127 +0,0 @@ -option(MLN_WITH_IOS_CCACHE "Enable ccache for iOS" OFF) -option(MLN_IOS_RENDER_TEST "Include render tests" ON) - -if(NOT DEFINED IOS_DEPLOYMENT_TARGET) - set(IOS_DEPLOYMENT_TARGET "12.0") -endif() - -# Override default CMake NATIVE_ARCH_ACTUAL -# https://gitlab.kitware.com/cmake/cmake/-/issues/20893 -# https://stackoverflow.com/a/22689917/5531400 -if(CMAKE_GENERATOR STREQUAL Xcode) - set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD)") -endif() -set_target_properties(mbgl-core PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Debug] "YES") - -macro(initialize_ios_target target) - set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${IOS_DEPLOYMENT_TARGET}") - set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_ENABLE_BITCODE "YES") - set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_BITCODE_GENERATION_MODE bitcode) - set_target_properties(${target} PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH $<$:YES>) -endmacro() - -set_target_properties(mbgl-core PROPERTIES XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES) - -if(MLN_WITH_OPENGL) - target_compile_definitions( - mbgl-core - PUBLIC GLES_SILENCE_DEPRECATION GLES_SILENCE_DEPRECATION - ) - list(APPEND - PLATFORM_FILES - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gl/headless_backend.cpp - ${PROJECT_SOURCE_DIR}/platform/darwin/src/gl_functions.cpp - ${PROJECT_SOURCE_DIR}/platform/darwin/src/headless_backend_eagl.mm - ) - target_link_libraries( - mbgl-core - PRIVATE "-framework GLKit" "-framework OpenGLES" - ) -endif() - -list(APPEND - PLATFORM_FILES - ${PROJECT_SOURCE_DIR}/platform/darwin/src/async_task.cpp - ${PROJECT_SOURCE_DIR}/platform/darwin/src/collator.mm - ${PROJECT_SOURCE_DIR}/platform/darwin/src/http_file_source.mm - ${PROJECT_SOURCE_DIR}/platform/darwin/src/image.mm - ${PROJECT_SOURCE_DIR}/platform/darwin/src/local_glyph_rasterizer.mm - ${PROJECT_SOURCE_DIR}/platform/darwin/src/logging_nslog.mm - ${PROJECT_SOURCE_DIR}/platform/darwin/src/native_apple_interface.m - ${PROJECT_SOURCE_DIR}/platform/darwin/src/nsthread.mm - ${PROJECT_SOURCE_DIR}/platform/darwin/src/number_format.mm - ${PROJECT_SOURCE_DIR}/platform/darwin/src/run_loop.cpp - ${PROJECT_SOURCE_DIR}/platform/darwin/src/string_nsstring.mm - ${PROJECT_SOURCE_DIR}/platform/darwin/src/timer.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gfx/headless_backend.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gfx/headless_frontend.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/layermanager/layer_manager.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/map/map_snapshotter.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/platform/time.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/asset_file_source.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/mbtiles_file_source.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/database_file_source.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/file_source_manager.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/file_source_request.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/local_file_request.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/local_file_source.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/main_resource_loader.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline_database.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline_download.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/online_file_source.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/sqlite3.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/text/bidi.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/compression.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/filesystem.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/monotonic_timer.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/png_writer.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/thread_local.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/utf.cpp -) - -target_sources( - mbgl-core PRIVATE - ${PLATFORM_FILES} -) -source_group(TREE ${PROJECT_SOURCE_DIR} FILES ${PLATFORM_FILES}) - -target_include_directories( - mbgl-core - PRIVATE ${PROJECT_SOURCE_DIR}/platform/darwin/include ${PROJECT_SOURCE_DIR}/platform/default/include -) - -include(${PROJECT_SOURCE_DIR}/vendor/icu.cmake) -if(MLN_WITH_IOS_CCACHE) - include(${PROJECT_SOURCE_DIR}/platform/ios/ccache.cmake) -endif() -if(MLN_WITH_OPENGL) - include(${PROJECT_SOURCE_DIR}/platform/ios/ios-test-runners.cmake) -endif() - -initialize_ios_target(mbgl-core) -initialize_ios_target(mbgl-vendor-csscolorparser) -initialize_ios_target(mbgl-vendor-icu) -initialize_ios_target(mbgl-vendor-parsedate) - -target_link_libraries( - mbgl-core - PRIVATE - "-framework CoreGraphics" - "-framework CoreImage" - "-framework CoreLocation" - "-framework CoreServices" - "-framework CoreText" - "-framework Foundation" - "-framework ImageIO" - "-framework QuartzCore" - "-framework Security" - "-framework SystemConfiguration" - "-framework UIKit" - "-framework WebKit" - mbgl-vendor-icu - sqlite3 - z -) - -unset(IOS_DEPLOYMENT_TARGET CACHE) diff --git a/platform/ios/platform/ios/iosapp-UITests/BUILD.bazel b/platform/ios/iosapp-UITests/BUILD.bazel similarity index 73% rename from platform/ios/platform/ios/iosapp-UITests/BUILD.bazel rename to platform/ios/iosapp-UITests/BUILD.bazel index 923e3559b..ac541f2f6 100644 --- a/platform/ios/platform/ios/iosapp-UITests/BUILD.bazel +++ b/platform/ios/iosapp-UITests/BUILD.bazel @@ -3,6 +3,9 @@ load( "swift_library", ) load("@build_bazel_rules_apple//apple:ios.bzl", "ios_ui_test") +load("//platform/ios/bazel:provisioning.bzl", "configure_device_profiles") + +configure_device_profiles() swift_library( name = "uitest_srcs", @@ -18,6 +21,7 @@ swift_library( ios_ui_test( name = "uitest", minimum_os_version = "12.0", + provisioning_profile = "xcode_profile", test_host = "//platform/ios:App", visibility = [ "@rules_xcodeproj//xcodeproj:generated", @@ -26,3 +30,7 @@ ios_ui_test( "uitest_srcs", ], ) + +exports_files([ + "Info.plist", +]) diff --git a/platform/ios/platform/ios/iosapp-UITests/Info.plist b/platform/ios/iosapp-UITests/Info.plist similarity index 100% rename from platform/ios/platform/ios/iosapp-UITests/Info.plist rename to platform/ios/iosapp-UITests/Info.plist diff --git a/platform/ios/platform/ios/iosapp-UITests/XCTestCase+Extensions.swift b/platform/ios/iosapp-UITests/XCTestCase+Extensions.swift similarity index 100% rename from platform/ios/platform/ios/iosapp-UITests/XCTestCase+Extensions.swift rename to platform/ios/iosapp-UITests/XCTestCase+Extensions.swift diff --git a/platform/ios/platform/ios/iosapp-UITests/iosapp_TestPlan.xctestplan b/platform/ios/iosapp-UITests/iosapp_TestPlan.xctestplan similarity index 100% rename from platform/ios/platform/ios/iosapp-UITests/iosapp_TestPlan.xctestplan rename to platform/ios/iosapp-UITests/iosapp_TestPlan.xctestplan diff --git a/platform/ios/platform/ios/iosapp-UITests/iosapp_UITests.swift b/platform/ios/iosapp-UITests/iosapp_UITests.swift similarity index 100% rename from platform/ios/platform/ios/iosapp-UITests/iosapp_UITests.swift rename to platform/ios/iosapp-UITests/iosapp_UITests.swift diff --git a/platform/ios/platform/ios/jazzy.yml b/platform/ios/jazzy.yml similarity index 100% rename from platform/ios/platform/ios/jazzy.yml rename to platform/ios/jazzy.yml diff --git a/platform/ios/platform/ios/originals/compass.sketch b/platform/ios/originals/compass.sketch similarity index 100% rename from platform/ios/platform/ios/originals/compass.sketch rename to platform/ios/originals/compass.sketch diff --git a/platform/ios/platform/ios/originals/screenshot.sketch b/platform/ios/originals/screenshot.sketch similarity index 100% rename from platform/ios/platform/ios/originals/screenshot.sketch rename to platform/ios/originals/screenshot.sketch diff --git a/platform/ios/platform/darwin/README.md b/platform/ios/platform/darwin/README.md deleted file mode 100644 index d98674c22..000000000 --- a/platform/ios/platform/darwin/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Darwin - -The code in the Darwin platform targets Apple platforms but is not specific -to iOS or macOS. This code is not distributed as an SDK in itself, but is required -by the [Mapbox iOS SDK](https://github.com/mapbox/mapbox-gl-native-ios/tree/master/platform/ios) -and [Mapbox macOS SDK](https://github.com/mapbox/mapbox-gl-native-ios/tree/master/platform/macos). - -These files depend on the Foundation and Core Foundation frameworks but do not -depend on iOS- or macOS–specific frameworks, such as UIKit or AppKit. Any -non-cross-platform code is guarded by TargetConditionals.h macros. diff --git a/platform/ios/platform/darwin/ci.xcconfig b/platform/ios/platform/darwin/ci.xcconfig deleted file mode 100644 index 8928c867a..000000000 --- a/platform/ios/platform/darwin/ci.xcconfig +++ /dev/null @@ -1 +0,0 @@ -COMPILER_INDEX_STORE_ENABLE = NO diff --git a/platform/ios/platform/darwin/include/mbgl/util/image+MLNAdditions.hpp b/platform/ios/platform/darwin/include/mbgl/util/image+MLNAdditions.hpp deleted file mode 100644 index 2ec75dae2..000000000 --- a/platform/ios/platform/darwin/include/mbgl/util/image+MLNAdditions.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once - -#include - -#include - -// Creates a CGImage from a PremultipliedImage, taking over the memory ownership. -CGImageRef CGImageCreateWithMLNPremultipliedImage(mbgl::PremultipliedImage&&); - -// Creates a PremultipliedImage by copying the pixels of the CGImage. -// Does not alter the retain count of the supplied CGImage. -mbgl::PremultipliedImage MLNPremultipliedImageFromCGImage(CGImageRef); diff --git a/platform/ios/platform/darwin/test/BUILD.bazel b/platform/ios/platform/darwin/test/BUILD.bazel deleted file mode 100644 index 9bbb25a75..000000000 --- a/platform/ios/platform/darwin/test/BUILD.bazel +++ /dev/null @@ -1,91 +0,0 @@ -load("//bazel:flags.bzl", "CPP_FLAGS", "MAPLIBRE_FLAGS", "WARNING_FLAGS") -load( - "@build_bazel_rules_swift//swift:swift.bzl", - "swift_library", -) - -objc_library( - name = "test_utility", - srcs = [ - "MLNTestUtility.h", - ], - includes = ["."], - visibility = [ - "//platform/ios/platform/ios/test:__pkg__", - ], -) - -objc_library( - name = "shared_tests_objc_srcs", - srcs = glob( - [ - "*.m", - "*.h", - ], - allow_empty = False, - ), - copts = MAPLIBRE_FLAGS + WARNING_FLAGS, - data = glob( - [ - "Media.xcassets/**", - ], - allow_empty = False, - ), - sdk_frameworks = [ - "MapKit", - ], - visibility = [ - "//platform/ios/platform/ios/test:__pkg__", - ], - deps = [ - "test_utility", - "//platform/ios:sdk", - ], -) - -objc_library( - name = "shared_tests_objcpp_srcs", - srcs = glob( - [ - "*.h", - "*.mm", - ], - allow_empty = False, - exclude = [ - "MLNOfflineStorageTests.mm", - ], - ), - copts = CPP_FLAGS + MAPLIBRE_FLAGS + WARNING_FLAGS + ["-Wno-deprecated-declarations"], - visibility = [ - "//platform/ios/platform/ios/test:__pkg__", - ], - deps = [ - "//platform/ios:sdk", - ], -) - -swift_library( - name = "shared_tests_swift_srcs", - testonly = True, - srcs = glob( - [ - "*.swift", - ], - allow_empty = False, - ), - data = [ - "amsterdam.geojson", - "one-liner.json", - ], - visibility = [ - "//platform/ios/platform/ios/test:__pkg__", - ], - deps = [ - "//platform/ios:sdk", - ], -) - -exports_files([ - "amsterdam.geojson", - "MLNSDKTestHelpers.swift", -]) diff --git a/platform/ios/platform/default/src/mbgl/render-test/main.cpp b/platform/ios/platform/default/src/mbgl/render-test/main.cpp deleted file mode 100644 index b997c7d1b..000000000 --- a/platform/ios/platform/default/src/mbgl/render-test/main.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#include - -int main(int argc, char *argv[]) -try { - return mbgl::runRenderTests(argc, argv); -} catch (std::exception const& e) { - std::cerr << "Caught an exception while running tests\n" << e.what() << '\n'; - return 1; -} diff --git a/platform/ios/platform/ios/CHANGELOG.md b/platform/ios/platform/ios/CHANGELOG.md deleted file mode 100644 index 54d283bfd..000000000 --- a/platform/ios/platform/ios/CHANGELOG.md +++ /dev/null @@ -1,1487 +0,0 @@ -# Changelog for MapLibre Native for iOS - -MapLibre welcomes participation and contributions from everyone. Please read [`Contributing Guide`](https://github.com/maplibre/maplibre-native/blob/master/CONTRIBUTING.md) to get started. - -## main - -* 💥 Breaking: Changed the prefix of files, classes, methods, variables and everything from `MGL` to `MLN`. ([#919](https://github.com/maplibre/maplibre-native/pull/919)). - - > To migrate: - > Change all your `MGL` prefixes to `MLN`. If you are using `NSKeyedArchiver` or similar mechanishm to save the state, the app may crash after this change when trying to unarchive the state using old names of the classes. You need to clean the saved state of the app and save it using new classes. - -## 5.13.0 - January 05, 2023 - -* Fix missing attribution [#236](https://github.com/maplibre/maplibre-native/pull/236) -* Fix logging format strings [#266](https://github.com/maplibre/maplibre-native/pull/266) -* Implement map projection functionality [#254](https://github.com/maplibre/maplibre-native/pull/254) -* Fix warnings, mainly casting to smaller types [#270](https://github.com/maplibre/maplibre-native/pull/270) -* Remove an unused static library (savings of 97 KB from iOS binary) -* Add ClientOptions to be able to pass around client name and version [#365](https://github.com/maplibre/maplibre-native/pull/365) -* Remove account from xcconfig [#382](https://github.com/maplibre/maplibre-native/pull/382) -* Remove observation of key-path [#380](https://github.com/maplibre/maplibre-native/pull/380) -* Fix for "NSExpression function is forbidden" [#411](https://github.com/maplibre/maplibre-native/pull/411) -* Xcode 14 compatibility [#494](https://github.com/maplibre/maplibre-native/pull/494) [#599](https://github.com/maplibre/maplibre-native/pull/599) - -## 5.12.2 - December 02, 2021 - -### Improvements - -* Exposes the windowBit value from zlib in the compress/decompress helper utils [#147](https://github.com/maplibre/maplibre-native/pull/147) -* Fix camera paddings reset on map view gestures performing [#188](https://github.com/maplibre/maplibre-native/pull/188) - -## 5.12.1 - September 06, 2021 - -### Bug Fixes - -* ScaleBar enhancements [#120](https://github.com/maplibre/maplibre-native/pull/120), [#121](https://github.com/maplibre/maplibre-native/pull/121) -* Invalid tile url template for MapLibre style [#107](https://github.com/maplibre/maplibre-native/pull/107) -* Address crash when localFontFamilyName is nil [#109](https://github.com/maplibre/maplibre-native/pull/109) -* Fix for annotations stuttering and drifting when panning [#113](https://github.com/maplibre/maplibre-native/pull/113) -* Adjust local glyphs [#122](https://github.com/maplibre/maplibre-native/pull/122) -* Return correct Mapbox TileServerOptions [#132](https://github.com/maplibre/maplibre-native/pull/132) - -### Other - -* Fix perf regression in cached tiles of tile pyramid [#129](https://github.com/maplibre/maplibre-native/pull/129) -* Upgrade to newest protozero [#148](https://github.com/maplibre/maplibre-native/pull/148) -* Fix build for Xcode 12.5 & 13-beta. [#153](https://github.com/maplibre/maplibre-native/pull/153) - -## 5.12.0 - June 29, 2021 - -### Features - -* Added allowScrollGesturesDuringRotateOrZoom [#60](https://github.com/maplibre/maplibre-native/pull/62) -* Replacing hardcoded configuration with configurable API and removing Mapbox assets and dependencies [#90](https://github.com/maplibre/maplibre-native/pull/90) - -### Bug Fixes - -* Fix map stuttering by switching render call to use setNeedsDisplay [#60](https://github.com/maplibre/maplibre-native/pull/60) -* Dispatch to main queue, rather than global [#64](https://github.com/maplibre/maplibre-native/pull/64) -* Use DisplayLink to prevent crashes in willResignActive [#68](https://github.com/maplibre/maplibre-native/pull/68) -* Ignore sizing and positioning for hidden elements in assertions [#80](https://github.com/maplibre/maplibre-native/pull/80) -* Disable map snapshots by default [#83](https://github.com/maplibre/maplibre-native/pull/83) - -## 5.11.0 - March 12, 2021 - -### Features - -* Added `MLNLocationManager.accuracyAuthorization` and `[MLNLocationManager requestTemporaryFullAccuracyAuthorizationWithPurposeKeyproperty:]` to support iOS 14 location accuracy privacy changes. (cherry pick from [#361](https://github.com/mapbox/mapbox-gl-native-ios/pull/361)) -* Added `[MLNLocationManager requestTemporaryFullAccuracyAuthorizationWithPurposeKeyproperty:]` to allow developers request just-in-time full-accuracy permissions. (cherry pick from [#361](https://github.com/mapbox/mapbox-gl-native-ios/pull/361)) -* Added `[MLNLocationManagerDelegate locationManagerDidChangeAuthorization:]` to let `MLNMapView` know about privacy changes. (cherry pick from [#376](https://github.com/mapbox/mapbox-gl-native-ios/pull/376)) -* Added `[MLNMapViewDelegate mapView:didChangeLocationManagerAuthorization:]` to allow developers adjust their apps to privacy settings changes. (cherry pick from [#376](https://github.com/mapbox/mapbox-gl-native-ios/pull/376)) -* Added an approximate user location halo when `MLNLocationManager.accuracyAuthorization` is set to `CLAccuracyAuthorizationReducedAccuracy`. (cherry pick from [#381](https://github.com/mapbox/mapbox-gl-native-ios/pull/381)) -* The `MLNAccuracyAuthorizationDescription` as element of `NSLocationTemporaryUsageDescriptionDictionary` Info.plist key can now be set to describe why you request accuracy authorization. (cherry pick from [#392](https://github.com/mapbox/mapbox-gl-native-ios/pull/392)) -* Added `[MLNMapViewDelegate mapViewStyleForDefaultUserLocationAnnotationView:]` and `MLNUserLocationAnnotationViewStyle` class to allow developers customize the default user location annotation view UI style. (cherry pick from [#403](https://github.com/mapbox/mapbox-gl-native-ios/pull/403)) - -### Bug Fixes - -* Fixed an issue that caused a crash when custom location managers did not implement `MLNLocationManager.accuracyAuthorization`. (cherry pick from [#474](https://github.com/mapbox/mapbox-gl-native-ios/pull/474)) -* Fixed an issue where symbols flickered when zooming out. [#16](https://github.com/maplibre/maplibre-native/issues/16) -* Benchmark app updated and fixes to the latest xcode version -* iOS performance improvements [#44](https://github.com/maplibre/maplibre-native/pull/44) - -### Other - -* mapbox-gl-js submodule has been replaced with maplibre-gl-js -* Removed Mapbox Mobile Events and Telemetry [#7](https://github.com/maplibre/maplibre-native/pull/7) - -## 5.10.0 - January 6, 2021 - -### Features - -* Added the mbtiles file source for rendering vector tiles from file stored locally on the device. - -## 5.9.0 - -### Styles and rendering - -* Added the `mgl_distanceFrom:` expression function for calculating the shortest distance between the evaluated feature and an `MLNPointAnnotation`, `MLNPointCollection`, `MLNPolyline`, `MLNMultiPolyline`, `MLNPolygon`, or `MLNMultiPolygon` that you specify as part of an `NSExpression` format string. ([#295](https://github.com/mapbox/mapbox-gl-native-ios/pull/295)) -* Added the `MLNCircleStyleLayer.circleSortKey` property. ([mapbox/mapbox-gl-native#15875](https://github.com/mapbox/mapbox-gl-native/pull/15875)) -* Chinese, Japanese, and Korean characters are now set in the font specified in style JSON or by the `MLNSymbolLayer.textFontNames` property. If the named font is not installed on the device or bundled with the application, the characters are set in a fallback font listed in the `MLNIdeographicFontFamilyName` key in the Info.plist file. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) -* The `MLNIdeographicFontFamilyName` key in the Info.plist file can now specify the fallback fonts for CJK characters by their PostScript names or display names in addition to font family names. For example, you can specify `NotoSansCJKjp-Bold` or `Noto Sans CJK JP Bold`, which ensures that the characters are set in bold. You can alternatively specify these font names in the `MLNIdeographicFontFamilyName` key of `NSUserDefaults.standardUserDefaults`. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) -* CJK characters are now laid out according to the font, so fonts with nonsquare glyphs have the correct kerning. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) -* Fixed an issue where the baseline for CJK characters was too low compared to non-CJK characters. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) -* Fixed a crash when calling the `-[MLNStyle removeImageForName:]` method with the name of a nonexistent image. ([mapbox/mapbox-gl-native#16391](https://github.com/mapbox/mapbox-gl-native/pull/16391)) -* Fixed an issue where properties such as `MLNFillStyleLayer.fillColor` and `MLNLineStyleLayer.lineColor` misinterpreted non-opaque `UIColor`s. ([#266](https://github.com/mapbox/mapbox-gl-native-ios/pull/266)) - -### Offline maps - -* Added the `-[MLNOfflinePack setContext:completionHandler:]` method for replacing the data associated with an offline pack, such as a name. ([#288](https://github.com/mapbox/mapbox-gl-native-ios/pull/288)) -* Added the `MLNOfflineStorage.databasePath` and `MLNOfflineStorage.databaseURL` properties to obtain the path of the database that contains offline packs and the ambient cache. To customize this path, set the `MLNOfflineStorageDatabasePath` in Info.plist. ([#298](https://github.com/mapbox/mapbox-gl-native-ios/pull/298)) -* Fixed an error that occurred if your implementation of the `-[MLNOfflineStorageDelegate offlineStorage:URLForResourceOfKind:]` method returned a local file URL. ([mapbox/mapbox-gl-native#16428](https://github.com/mapbox/mapbox-gl-native/pull/16428)) - -### Other changes - -* Fixed a crash when encountering an invalid polyline. ([mapbox/mapbox-gl-native#16409](https://github.com/mapbox/mapbox-gl-native/pull/16409)) -* Fixed an issue where an `MLNMapSnapshotOptions` with an invalid `MLNMapCamera.centerCoordinate`, negative `MLNMapCamera.heading`, negative `MLNMapCamera.pitch`, and negative `MLNMapSnapshotOptions.zoomLevel` resulted in a snapshot centered on Null Island at zoom level 0 even if the style specified a different initial center coordinate or zoom level. ([#280](https://github.com/mapbox/mapbox-gl-native-ios/pull/280)) -* Certain logging statements no longer run on the main thread. ([mapbox/mapbox-gl-native#16325](https://github.com/mapbox/mapbox-gl-native/pull/16325)) -* Fixed an issue that prevented the Maps SDK from warning about a misconfiguration that violated the Mapbox ToS. ([#288](https://github.com/mapbox/mapbox-gl-native-ios/pull/288)) - -## 5.8.0 - -### Styles and rendering - -* The `IN` and `CONTAINS` predicate operators can now test whether a string is a substring of another string or whether the evaluated feature (`SELF`) lies within a given `MLNShape` or `MLNFeature`. ([#183](https://github.com/mapbox/mapbox-gl-native-ios/pull/183), [#184](https://github.com/mapbox/mapbox-gl-native-ios/pull/184)) -* Added the `MLNLineStyleLayer.lineSortKey` and `MLNFillStyleLayer.fillSortKey` properties. ([#179](https://github.com/mapbox/mapbox-gl-native-ios/pull/179), [#16194](https://github.com/mapbox/mapbox-gl-native/pull/16194), [#16220](https://github.com/mapbox/mapbox-gl-native/pull/16220)) -* The `MLNSymbolStyleLayer.iconTextFit` property now respects the cap insets of any [nine-part stretchable image](https://developer.apple.com/documentation/uikit/uiimage#1658362) passed into the `-[MLNStyle setImage:forName:]` method. You can define the stretchable area in Xcode’s asset catalog or by calling the `-[UIImage resizableImageWithCapInsets:]` method. ([#182](https://github.com/mapbox/mapbox-gl-native-ios/pull/182)) -* Fixed an issue where an `MLNSymbolStyleLayer.lineDashPattern` value of `{1, 0}` resulted in hairline gaps. ([#16202](https://github.com/mapbox/mapbox-gl-native/pull/16202)) -* Improved the performance of loading a style that has many style images. ([#16187](https://github.com/mapbox/mapbox-gl-native/pull/16187)) - -### Snapshots - -* Added the `MLNMapSnapshotter.delegate` property and `MLNMapSnapshotterDelegate` protocol for customizing the style before taking a snapshot. ([#235](https://github.com/mapbox/mapbox-gl-native-ios/pull/235)) -* You no longer need to explicitly capture the `MLNMapSnapshotter` object in the completion handler that you specify in `-[MLNMapSnapshotter startWithCompletionHandler:]`. Even if you declare the snapshotter locally without holding a strong reference to it, the snapshotter is only deallocated after the completion handler finishes, and the completion handler generally receives a valid snapshot. ([#210](https://github.com/mapbox/mapbox-gl-native-ios/pull/210)) -* The `-[MLNMapSnapshotter cancel]` method no longer calls the completion handler passed into `-[MLNMapSnapshotter startWithCompletionHandler:]`. ([#210](https://github.com/mapbox/mapbox-gl-native-ios/pull/210)) -* Fixed an issue where the `MLNMapSnapshotter.loading` property always returned `NO`, even while loading a snapshot. ([#210](https://github.com/mapbox/mapbox-gl-native-ios/pull/210)) - -### Localization and internationalization - -* The `MLNIdeographicFontFamilyName` Info.plist key can now be set to the display names or PostScript names of individual fonts. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) -* The `-[MLNStyle localizeLabelsIntoLocale:]` and `-[NSExpression mgl_expressionLocalizedIntoLocale:]` methods can now localize text into Traditional Chinese and Vietnamese. ([#173](https://github.com/mapbox/mapbox-gl-native-ios/pull/173)) - -### Networking and storage - -* Downloaded offline packs no longer reduce the storage space available for ambient caching of tiles and other resources. ([#15622](https://github.com/mapbox/mapbox-gl-native/pull/15622)) -* Added the `-[MLNOfflineStorage preloadData:forURL:modificationDate:expirationDate:eTag:mustRevalidate:completionHandler:]` method for determining when the data is ready to retrieve from the cache. ([#188](https://github.com/mapbox/mapbox-gl-native-ios/pull/188)) -* Fixed issues where an offline pack would stop downloading before completion. ([#16230](https://github.com/mapbox/mapbox-gl-native/pull/16230), [#16240](https://github.com/mapbox/mapbox-gl-native/pull/16240)) -* When an offline pack encounters an HTTP 404 error, the `MLNOfflinePackUserInfoKeyError` user info key of the `MLNOfflinePackErrorNotification` now indicates the resource that could not be downloaded. ([#16240](https://github.com/mapbox/mapbox-gl-native/pull/16240)) - -### Other changes - -* Added the `MLNMapView.minimumPitch` and `MLNMapView.maximumPitch` properties to further limit how much the user or your code can tilt the map. ([#208](https://github.com/mapbox/mapbox-gl-native-ios/pull/208)) -* Fixed a crash while quitting the application after adding an annotation to `MLNMapView`. ([#252](https://github.com/mapbox/mapbox-gl-native-ios/pull/252)) -* Fixed an issue where the user location annotation view’s heading indicator did not rotate if Compass Calibration was disabled in the device’s Location Services settings. ([#247](https://github.com/mapbox/mapbox-gl-native-ios/pull/247)) -* Improved performance when continuously animating a tilted map. ([#16287](https://github.com/mapbox/mapbox-gl-native/pull/16287)) -* Fixed a memory leak when zooming with any options enabled in the `MLNMapView.debugMask` property. ([#15179](https://github.com/mapbox/mapbox-gl-native/issues/15179)) - -## 5.7.0 - February 13, 2020 - -### Bug fixes -* Fixed an issue where `MLNSymbolStyleLayer.symbolSortKey` could sort text and icons incorrectly. ([#16023](https://github.com/mapbox/mapbox-gl-native/pull/16023)) -* Fixed a crash when parsing GeoJSON sources. ([#16106](https://github.com/mapbox/mapbox-gl-native/pull/16106)) - -### Other changes -* Added new property `MLNMapView.panScrollingMode`, which allows you to limit the horizontal or vertical direction a user may pan on the map view. ([#108](https://github.com/mapbox/mapbox-gl-native-ios/pull/108)) -* Added the `image` expression function for converting an image name into a style image. Use this function in expressions in style JSON or with the `MLN_FUNCTION()` syntax in an `NSExpression` format string. Image expressions are compatible with the `mgl_attributed:` expression function and `MLNAttributedExpression` classes for embedding icons inline in text labels. ([#15877](https://github.com/mapbox/mapbox-gl-native/pull/15877), [#15937](https://github.com/mapbox/mapbox-gl-native/pull/15937)) - -## 5.6.1 - January 9, 2020 -* Fixed a crash that could occur when `MLNShapeSource` destroys its underlying data. ([#16106](https://github.com/mapbox/mapbox-gl-native/pull/16106)) - -## 5.6.0 - December 19, 2019 -This release includes a known issue where the binary size has increased. ([#63](https://github.com/mapbox/mapbox-gl-native-ios/issues/63)) - -### Packaging -* Integrates [`MapboxMobileEvents`](https://github.com/mapbox/mapbox-events-ios) as a dependency ([#60](https://github.com/mapbox/mapbox-gl-native-ios/pull/60)). As a result, the following installation processes have changed: - - CocoaPods: You now must include `use frameworks!` in your Podfile. - - Carthage: Specify `github "mapbox/mapbox-events-ios" == 0.10.2` in your Cartfile. Additionally, please note that if you are using `--no-use-binaries`, the `MapboxMobileEvents.framework` will still be installed as a dynamic framework. - - Manual installation: New Github release artifact (`mapbox-ios-sdk-5.6.0-beta.1-dynamic-with-events.zip`) contains the `MapboxMobileEvents.framework`; please install this along with `Mapbox.framework` - -### Networking and storage -* Expired resources are now fetched at a lower priority than new resources. ([#15950](https://github.com/mapbox/mapbox-gl-native/pull/15950)) - -### Bug fixes -* Fixed the rendering bug caused by redundant pending requests for already requested images [#15864](https://github.com/mapbox/mapbox-gl-native/pull/15864) -* Enable incremental vacuum for the offline database in order to make data removal requests faster and to avoid the excessive disk space usage (creating a backup file on VACUUM call). ([#15837](https://github.com/mapbox/mapbox-gl-native/pull/15837)) -* Fix ornaments' view constraints bug when devices change to bold-text mode. ([#57](https://github.com/mapbox/mapbox-gl-native-ios/pull/57)) -* Fixed an issue where style layers backed by a shape source could flicker when transitioning between styles. ([#15907](https://github.com/mapbox/mapbox-gl-native/pull/15907), [#15941](https://github.com/mapbox/mapbox-gl-native/pull/15941)) -* Fixed a crash when `MLNSymbolStyleLayer.textFontSize` is set to an expression that evaluates to `0`. ([#16080](https://github.com/mapbox/mapbox-gl-native/pull/16080)) - -### Other changes -* Convert GeoJSON features to tiles for the loaded source description in a background thread and thus unblock the UI thread ([#15885](https://github.com/mapbox/mapbox-gl-native/pull/15885)) - -## 5.5.1 - February 20, 2020 - -* Fixed an issue where `MLNSymbolStyleLayer.symbolSortKey` could sort text and icons incorrectly. ([#16023](https://github.com/mapbox/mapbox-gl-native/pull/16023)) -* Fixed an issue where style layers backed by a shape source could flicker when transitioning between styles. ([#15907](https://github.com/mapbox/mapbox-gl-native/pull/15907), [#15941](https://github.com/mapbox/mapbox-gl-native/pull/15941)) - -## 5.5.0 - November 5, 2019 - -### Performance improvements - -* Improved rendering performance for the styles with multiple sources ([#15756](https://github.com/mapbox/mapbox-gl-native/pull/15756)) - -### Styles and rendering - -* Added an `MLNShapeSourceOptionClusterProperties` option that allows styling individual clusters based on aggregated feature data. ([#15515](https://github.com/mapbox/mapbox-gl-native/pull/15515)) - -### Other changes - -* Added `-[MLNMapSnapshotOverlay coordinateForPoint:]` and `-[MLNMapSnapshotOverlay pointForCoordinate:]` to convert between context and map coordinates, mirroring those of `MLNMapSnapshot`. ([#15746](https://github.com/mapbox/mapbox-gl-native/pull/15746)) -* Suppress network requests for expired tiles update, if these tiles are invisible. ([#15741](https://github.com/mapbox/mapbox-gl-native/pull/15741)) -* Fixed an issue that cause the ornaments to ignore `MLNMapView.contentInset` property. ([#15584](https://github.com/mapbox/mapbox-gl-native/pull/15584)) -* Fixed an issue that cause `-[MLNMapView setCamera:withDuration:animationTimingFunction:edgePadding:completionHandler:]` persist the value of `edgePadding`. ([#15584](https://github.com/mapbox/mapbox-gl-native/pull/15584)) -* Added `MLNMapView.automaticallyAdjustsContentInset` property that indicates if wether the map view should automatically adjust its content insets. ([#15584](https://github.com/mapbox/mapbox-gl-native/pull/15584)) -* Fixed an issue that caused `MLNScaleBar` to have an incorrect size when resizing or rotating. ([#15703](https://github.com/mapbox/mapbox-gl-native/pull/15703)) -* Fixed crash at launch seen on iOS 9 simulator. ([#15771](https://github.com/mapbox/mapbox-gl-native/pull/15771)) -* Coalesce requests to the client for the same missing image ([#15778](https://github.com/mapbox/mapbox-gl-native/pull/15778)) - -## 5.4.0 - September 25, 2019 - -### Styles and rendering - -* Added an `-[MLNMapSnapshotter startWithOverlayHandler:completionHandler:]` method to provide the snapshot's current `CGContext` in order to perform custom drawing on `MLNMapSnapshot` objects. ([#15530](https://github.com/mapbox/mapbox-gl-native/pull/15530)) -* Fixed an issue that caused `MLNTileSourceOptionMaximumZoomLevel` to be ignored when setting `MLNTileSource.configurationURL`. ([#15581](https://github.com/mapbox/mapbox-gl-native/pull/15581)) -* Fixed an assertion hit caused by possibility of adding a layer to an incompatible source. ([#15644](https://github.com/mapbox/mapbox-gl-native/pull/15644)) -* Fixed crashes triggered when `MLNSource` and `MLNStyleLayer` objects are accessed after having been invalidated after a style change. ([#15539](https://github.com/mapbox/mapbox-gl-native/pull/15539)) -* Fixed an issue where the collision boxes for symbols would not be updated when `MLNSymbolStyleLayer.textTranslation` or `MLNSymbolStyleLayer.iconTranslation` were used. ([#15467](https://github.com/mapbox/mapbox-gl-native/pull/15467)) -* Enabled use of `MLNSymbolStyleLayer.textOffset` option together with `MLNSymbolStyleLayer.textVariableAnchor` (if `MLNSymbolStyleLayer.textRadialOffset` option is not provided). ([#15542](https://github.com/mapbox/mapbox-gl-native/pull/15542)) -* Fixed an issue that caused constant repainting for sources with invisible layers. ([#15600](https://github.com/mapbox/mapbox-gl-native/pull/15600)) - -### User interaction - -* Fixed an issue that caused the tilt gesture to trigger too easily and conflict with pinch or pan gestures. ([#15349](https://github.com/mapbox/mapbox-gl-native/pull/15349)) -* Fixed an issue that caused the map to rotate too easily during a pinch gesture. [(#15562)](https://github.com/mapbox/mapbox-gl-native/pull/15562) - -### Performance improvements - -* Improved offline region download performance by batching certain database activities. ([#15521](https://github.com/mapbox/mapbox-gl-native/pull/15521)) -* Newly loaded labels appear faster on the screen. ([#15308](https://github.com/mapbox/mapbox-gl-native/pull/15308)) - -### Other changes - -* Fixed a bug where the completion block passed to `-[MLNMapView flyToCamera:completionHandler:]` (and related methods) wouldn't be called. ([#15473](https://github.com/mapbox/mapbox-gl-native/pull/15473)) -* Fixed a crash when `-[MLNOfflinePack invalidate]` is called on different threads. ([#15582](https://github.com/mapbox/mapbox-gl-native/pull/15582)) -* Fixed a potential integer overflow at high zoom levels. ([#15560](https://github.com/mapbox/mapbox-gl-native/pull/15560)) -* Fixed a bug with annotation view positions after camera transitions. ([#15122](https://github.com/mapbox/mapbox-gl-native/pull/15122/)) - -## 5.3.2 - September 18, 2019 - -* Fixed an issue where `-[MLNMapView visibleFeaturesInRect:]` and `-[MLNShapeSource featuresMatchingPredicate:]` could return incorrect coordinates at zoom levels 20 and higher. ([#15560](https://github.com/mapbox/mapbox-gl-native/pull/15560)) - -## 5.3.1 - September 18, 2019 - -### Styles and rendering - -* Fixed an issue where connecting coincident holes in a polygon could lead to a race condition. ([#15660](https://github.com/mapbox/mapbox-gl-native/pull/15660)) - -### Other changes - -* Fixed an issue where the scale bar text would become illegible if iOS 13 dark mode was enabled. ([#15524](https://github.com/mapbox/mapbox-gl-native/pull/15524)) -* Fixed an issue with the appearance of the compass text in iOS 13. ([#15547](https://github.com/mapbox/mapbox-gl-native/pull/15547)) - -## 5.3.0 - August 28, 2019 - -This release changes how offline tile requests are billed — they are now billed on a pay-as-you-go basis and all developers are able raise the offline tile limit for their users. Offline requests were previously exempt from monthly active user (MAU) billing and increasing the offline per-user tile limit to more than 6,000 tiles required the purchase of an enterprise license. By upgrading to this release, you are opting into the changes outlined in [this blog post](https://blog.mapbox.com/offline-maps-for-all-bb0fc51827be) and [#15380](https://github.com/mapbox/mapbox-gl-native/pull/15380). - -### Styles and rendering - -* Fixed flickering on style change for the same tile set. ([#15127](https://github.com/mapbox/mapbox-gl-native/pull/15127)) -* Fixed performance issues when tilting a map with custom content insets. ([#15195](https://github.com/mapbox/mapbox-gl-native/pull/15195)) -* Fixed an issue where animated camera transitions zoomed in or out too dramatically. ([#15281](https://github.com/mapbox/mapbox-gl-native/pull/15281)) -* Enabled variable label placement when `MLNSymbolStyleLayer.textAllowsOverlap` is set to true. ([#15354](https://github.com/mapbox/mapbox-gl-native/pull/15354)) -* Added the `MLNSymbolStyleLayer.textWritingModes` layout property. This property can be set to `MLNTextWritingModeHorizontal` or `MLNTextWritingModeVertical`. ([#14932](https://github.com/mapbox/mapbox-gl-native/pull/14932)) -* Fixed rendering and collision detection issues with using `MLNSymbolStyleLayer.textVariableAnchor` and `MLNSymbolStyleLayer.iconTextFit` properties on the same layer. ([#15367](https://github.com/mapbox/mapbox-gl-native/pull/15367)) -* Fixed symbol overlap when zooming out quickly. ([#15416](https://github.com/mapbox/mapbox-gl-native/pull/15416)) -* Fixed an issue where non-template images would draw as template images when used in the same style layer. ([#15456](https://github.com/mapbox/mapbox-gl-native/pull/15456)) - -### Other changes - -* Fixed a bug where glyphs generated through the LocalGlyphRasterizer interface were changing fonts during some zoom changes. ([#15407](https://github.com/mapbox/mapbox-gl-native/pull/15407)) -* Fixed use of objects after moving, potentially causing crashes. ([#15408](https://github.com/mapbox/mapbox-gl-native/pull/15408)) -* Fixed a possible crash that could be caused by invoking the wrong layer implementation casting function. ([#15398](https://github.com/mapbox/mapbox-gl-native/pull/15398)) -* Fixed a rare crash when tile download requests returned “404 Not Found” errors. ([#15313](https://github.com/mapbox/mapbox-gl-native/pull/15313)) -* `MLNLoggingLevel` has been updated to better match core log levels. You can now use `MLNLoggingConfiguration.loggingLevel` to filter logs from core. ([#15120](https://github.com/mapbox/mapbox-gl-native/pull/15120)) -* Fixed an issue where the scale bar could show `0 mm` instead of `0`. ([#15381](https://github.com/mapbox/mapbox-gl-native/pull/15381)) - -## 4.11.2 - July 30, 2019 - -* Fixed a map update bug caused by the render tiles and the render passes becoming unsynchronized. ([#15092](https://github.com/mapbox/mapbox-gl-native/pull/15092)) -* Fixed a custom geometry source bug caused by using the outdated tiles after style update. ([#15112](https://github.com/mapbox/mapbox-gl-native/pull/15112)) - -## 5.0.2 - July 29, 2019 - -* Fixed an issue where fill extrusion layers would be incorrectly rendered above other layers. ([#15065](https://github.com/mapbox/mapbox-gl-native/pull/15065)) -* Fixed a map update bug caused by the render tiles and the render passes becoming unsynchronized. ([#15092](https://github.com/mapbox/mapbox-gl-native/pull/15092)) -* Fixed a custom geometry source bug caused by using the outdated tiles after style update. ([#15112](https://github.com/mapbox/mapbox-gl-native/pull/15112)) - -## 5.1.2 - July 25, 2019 - -* Fixed a crash during network access. ([#15113](https://github.com/mapbox/mapbox-gl-native/pull/15113)) - -## 5.2.0 - July 24, 2019 - -### Networking - -* Added methods to clear the ambient cache, change the size of the ambient cache, and to delete and revalidate the database that contains the ambient cache and offline packs ([#14978](https://github.com/mapbox/mapbox-gl-native/pull/14978)): - * `-[MLNOfflineStorage clearAmbientCacheWithCompletionHandler:]` - * `-[MLNOfflineStorage invalidateAmbientCacheWithCompletionHandler:]` - * `-[MLNOfflineStorage setMaximumAmbientCacheSize:withCompletionHandler:]` - * `-[MLNOfflineStorage resetDatabaseWithCompletionHandler:]` - * `-[MLNOfflineStorage invalidatePack:withCompletionHandler:]` - -### Styles and rendering - -* The `MLNIdeographicFontFamilyName` Info.plist key now also accepts an array of font family names, to customize font fallback behavior. It can also be set to a Boolean value of `NO` to force the SDK to typeset CJK characters in a remote font specified by `MLNSymbolStyleLayer.textFontNames`. ([#14862](https://github.com/mapbox/mapbox-gl-native/pull/14862)) -* Hiragana and katakana are now included in the range of CJK glyphs that are rendered locally by default. ([#15009](https://github.com/mapbox/mapbox-gl-native/pull/15009)) -* Fixed a map update bug caused by the render tiles and the render passes becoming unsynchronized. ([#15092](https://github.com/mapbox/mapbox-gl-native/pull/15092)) -* Added the `-[MLNMapViewDelegate mapView:shouldRemoveStyleImage:]` method for optimizing style image caching. ([#14769](https://github.com/mapbox/mapbox-gl-native/pull/14769)) -* Fixed style change transition regression caused by delayed setting of the updated layer properties. ([#15016](https://github.com/mapbox/mapbox-gl-native/pull/15016)) -* Fixed an issue where layers with fill extrusions would be incorrectly rendered above other layers. ([#15065](https://github.com/mapbox/mapbox-gl-native/pull/15065)) -* Improved feature querying performance. ([#14930](https://github.com/mapbox/mapbox-gl-native/pull/14930)) -* Fixed a custom geometry source bug caused by using the outdated tiles after style update ([#15112](https://github.com/mapbox/mapbox-gl-native/pull/15112)) - -### User interaction - -* Fixed an issue where annotations could not be selected. ([#15130](https://github.com/mapbox/mapbox-gl-native/pull/15130)) -* Fixed a bug where using the pinch gesture could result in an incorrect map center coordinate. ([#15097](https://github.com/mapbox/mapbox-gl-native/pull/15097)) -* Fixed an issue where the two-finger tilt gesture would continue after lifting one finger. ([#14969](https://github.com/mapbox/mapbox-gl-native/pull/14969)) - -### Offline maps - -* Ideographic glyphs from Chinese, Japanese, and Korean are no longer downloaded by default as part of offline packs; they are instead rendered on-device, saving bandwidth and storage while improving performance. ([#14176](https://github.com/mapbox/mapbox-gl-native/pull/14176)) -* Fixed an issue where offline regions could report the wrong number of tiles. ([#14958](https://github.com/mapbox/mapbox-gl-native/pull/14958)) - -### Packaging - -* Removed previously deprecated methods and properties that had been marked `unavailable`. ([#15000](https://github.com/mapbox/mapbox-gl-native/pull/15000)) -* The downloaded zip file of this framework no longer contains a local podspec. ([#15027](https://github.com/mapbox/mapbox-gl-native/pull/15027)) - -### Other changes - -* Added variants of several animated `MLNMapView` methods that accept completion handlers ([#14381](https://github.com/mapbox/mapbox-gl-native/pull/14381)): - * `-[MLNMapView setVisibleCoordinateBounds:edgePadding:animated:completionHandler:]` - * `-[MLNMapView setContentInset:animated:completionHandler:]` - * `-[MLNMapView setUserTrackingMode:animated:completionHandler:]` - * `-[MLNMapView setTargetCoordinate:animated:completionHandler:]` - * `-[MLNMapView showAnnotations:edgePadding:animated:completionHandler:]` - * `-[MLNMapView selectAnnotation:animated:completionHandler:]` -* Deprecated variants of the above methods without completion handlers. ([#14959](https://github.com/mapbox/mapbox-gl-native/pull/14959)) -* Added `MLNMapView.compassView.compassVisibility` and `MLNOrnamentVisibility` to allow configuration of compass visibility behavior. ([#15055](https://github.com/mapbox/mapbox-gl-native/pull/15055)) -* Fixed a crash during network access. ([#15113](https://github.com/mapbox/mapbox-gl-native/pull/15113)) -* Updated "map ID" to the more accurate term "tileset ID" in documentation; updated "style's Map ID" to the more accurate term "style URL". ([#15116](https://github.com/mapbox/mapbox-gl-native/pull/15116)) - -## 4.10.1 - July 19, 2019 - -* Fixed a bug in telemetry collection. ([#15077](https://github.com/mapbox/mapbox-gl-native/pull/15077)) - -## 4.11.1 - July 19, 2019 - -* Fixed a bug in telemetry collection. ([#15077](https://github.com/mapbox/mapbox-gl-native/pull/15077)) - -## 5.0.1 - July 18, 2019 - -* Fixed a bug in telemetry collection. ([#15077](https://github.com/mapbox/mapbox-gl-native/pull/15077)) - -## 5.1.1 - July 18, 2019 - -* Fixed a bug in telemetry collection. ([#15077](https://github.com/mapbox/mapbox-gl-native/pull/15077)) - -## 5.1.0 - June 19, 2019 - -### Styles and rendering - -* Fixed a crash when a fill pattern in a style could not be found. ([#14696](https://github.com/mapbox/mapbox-gl-native/pull/14696)) -* Fixed a rendering performance regression when rendering polylines. ([#14851](https://github.com/mapbox/mapbox-gl-native/pull/14851)) -* Fixed a rendering performance regression introduced in 4.11.0. ([#14907](https://github.com/mapbox/mapbox-gl-native/pull/14907)) -* Fixed an issue where symbols underneath opaque fill layers could be incorrectly drawn above such layers. ([#14839](https://github.com/mapbox/mapbox-gl-native/pull/14839)) -* Fixed an issue where `MLNFillExtrusionStyleLayer` vertical gradients might not be rendered. ([#14808](https://github.com/mapbox/mapbox-gl-native/pull/14808)) - -### Other changes - -* The `-[MLNMapView setCamera:withDuration:animationTimingFunction:edgePadding:completionHandler:]` method now adds the current value of the `MLNMapView.contentInset` property to the `edgePadding` parameter. ([#14813](https://github.com/mapbox/mapbox-gl-native/pull/14813)) -* Setting `MLNMapView.contentInset` now moves the map’s focal point to the center of the content frame after insetting. ([#14664](https://github.com/mapbox/mapbox-gl-native/pull/14664)) -* Fixed an issue where `-[MLNMapView visibleFeaturesInRect:]` and `-[MLNShapeSource featuresMatchingPredicate:]` omitted some features from the return value. ([#14884](https://github.com/mapbox/mapbox-gl-native/pull/14884)) - -## 5.0.0 - May 22, 2019 - -This release improves how monthly active users are counted. By upgrading to this release, you are opting into the changes outlined in [this blog post](https://www.mapbox.com/52219) and [#14421](https://github.com/mapbox/mapbox-gl-native/pull/14421). - -There are no breaking API changes in this release. - -### Styles and rendering - -* Changed placement order of `MLNSymbolStyleLayer` to match the viewport-y order when `MLNSymbolStyleLayer.symbolZOrder` is set to `MLNSymbolZOrderViewportY`, allowing icons to overlap but not text. ([#14486](https://github.com/mapbox/mapbox-gl-native/pull/14486)) -* Added `MLNSymbolStyleLayer.symbolSortKey` and `MLNSymbolZOrderAuto` to allow customization of symbol z-ordering. ([#14386](https://github.com/mapbox/mapbox-gl-native/pull/14386)) - -### Other changes - -* Fixed an issue where `-[MLNMapView setVisibleCoordinates:count:edgePadding:direction:duration:animationTimingFunction:completionHandler:]` interpreted a negative `direction` as due north instead of maintaining the current direction. ([#14575](https://github.com/mapbox/mapbox-gl-native/pull/14575)) - -## 4.11.0 - May 15, 2019 - -### Styles and rendering - -* Fixed a bug where some layers weren’t rendering correctly after panning. ([#14527](https://github.com/mapbox/mapbox-gl-native/pull/14527)) -* Speculatively fixed a rare background crash when receiving a memory warning. ([#14383](https://github.com/mapbox/mapbox-gl-native/pull/14383)) - -### Annotations - -* Fixed a bug with jittery callout views when using sprite-based annotations. ([#14445](https://github.com/mapbox/mapbox-gl-native/pull/14445)) - -### Other changes - -* Fixed an Interface Builder crash when using an `MLNMapView` in a storyboard. ([#14379](https://github.com/mapbox/mapbox-gl-native/pull/14379)) -* Fixed a bug that caused incorrect positioning of the attribution dialog after rotation. ([#14185](https://github.com/mapbox/mapbox-gl-native/pull/14185)) -* Improved `MLNLocationManager` optional protocol properties bridging to Swift. ([#14477](https://github.com/mapbox/mapbox-gl-native/pull/14477)) -* Fixed a layout constraints crash on iOS 9 when a view is removed from its superview. ([#14529](https://github.com/mapbox/mapbox-gl-native/pull/14529)) - -## 4.10.0 - April 17, 2019 - -### Styles and rendering - -* Client-side text rendering of CJK ideographs is now enabled by default. ([#13988](https://github.com/mapbox/mapbox-gl-native/pull/13988)) -* Fixed an issue that caused `MLN_FUNCTION` to ignore multiple formatting parameters when passed a `format` function as parameter. ([#14064](https://github.com/mapbox/mapbox-gl-native/pull/14064)) -* Added `mgl_attributed:` expression operator, which concatenates `MLNAttributedExpression` objects for specifying rich text in the `MLNSymbolStyleLayer.text` property. ([#14094](https://github.com/mapbox/mapbox-gl-native/pull/14094)) -* Fixed an issue that caused conditional expressions to crash when passed nested conditional expressions as parameters. ([#14181](https://github.com/mapbox/mapbox-gl-native/pull/14181)) -* Added `-[MLNMapViewDelegate mapView:didFailToLoadImage:]` to load missing symbol icons in the style if they are not found. ([#14302](https://github.com/mapbox/mapbox-gl-native/pull/14302)) -* Fixed a possible crash with certain expressions containing arguments that evaluate to a dictionary containing `NSArray` or `NSNumber` values. ([#14352](https://github.com/mapbox/mapbox-gl-native/pull/14352)) -* Fixed a bug where non-opaque `UIColor` values were ignored when assigned to a style layer color property. ([#14406](https://github.com/mapbox/mapbox-gl-native/pull/14406)) -* Speculatively fixed a bug where GL rendering could occur in the background. ([#14439](https://github.com/mapbox/mapbox-gl-native/pull/14439)) - -### Packaging - -* Added a Galician localization. ([#14095](https://github.com/mapbox/mapbox-gl-native/pull/14095)) -* Added support for building with Xcode 10.2 / iOS SDK 12.2. ([#14241](https://github.com/mapbox/mapbox-gl-native/pull/14241)) - -### Offline maps - -* Fixed a bug that caused offline packs created prior to v4.0.0 to be marked as `MLNOfflinePackStateInactive`. ([#14188](https://github.com/mapbox/mapbox-gl-native/pull/14188)) - -### Other changes - -* Added `MLNOrnamentPosition` enum and margin properties to customize scale bar, compass, logo, and attribution position within the map view. ([#13911](https://github.com/mapbox/mapbox-gl-native/pull/13911)) -* Added an `MLNMapView.prefetchesTiles` property to configure lower-resolution tile prefetching behavior. ([#14031](https://github.com/mapbox/mapbox-gl-native/pull/14031)) -* Speculatively fixed a performance issue seen on iOS 12.2, when an `MLNMapView` is repeatedly removed and re-added in a view hierarchy. ([#14264](https://github.com/mapbox/mapbox-gl-native/pull/14264)) - -## 4.9.0 - February 27, 2019 - -* Fixed a bug where setting `MLNMapView.userTrackingMode` to `MLNUserTrackingModeFollowWithHeading` or `MLNUserTrackingModeFollowWithCourse` would be ignored if the user’s location was not already available. ([#13849](https://github.com/mapbox/mapbox-gl-native/pull/13849)) -* Improved tilt gesture performance. ([#13902](https://github.com/mapbox/mapbox-gl-native/pull/13902)) -* Fixed a bug where `layoutSubviews` was always called on device rotation, regardless of the application's or top-most view controller's supported orientations. ([#13900](https://github.com/mapbox/mapbox-gl-native/pull/13900)) -* Added `MLNNetworkConfiguration` class to customize the SDK's `NSURLSessionConfiguration` object. ([#13886](https://github.com/mapbox/mapbox-gl-native/pull/13886)) - -## 4.8.0 - January 30, 2019 - -### Styles and rendering - -* Added an `MLNStyle.performsPlacementTransitions` property to control how long it takes for colliding labels to fade out. ([#13565](https://github.com/mapbox/mapbox-gl-native/pull/13565)) -* Fixed a crash when casting large numbers in `NSExpression`. ([#13580](https://github.com/mapbox/mapbox-gl-native/pull/13580)) -* Added the `-[MLNShapeSource leavesOfCluster:offset:limit:]`, `-[MLNShapeSource childrenOfCluster:]`, `-[MLNShapeSource zoomLevelForExpandingCluster:]` methods for inspecting a cluster in an `MLNShapeSource`s created with the `MLNShapeSourceOptionClustered` option. Feature querying now returns clusters represented by `MLNPointFeatureCluster` objects (that conform to the `MLNCluster` protocol). ([#12952](https://github.com/mapbox/mapbox-gl-native/pull/12952) - -### Annotations - -* Fixed a bug where the `animated` parameter to `-[MLNMapView selectAnnotation:animated:]` was being ignored. ([#13689](https://github.com/mapbox/mapbox-gl-native/pull/13689)) -* Fixed a bug where selecting partially on-screen annotations (without a callout) would move the map. ([#13727](https://github.com/mapbox/mapbox-gl-native/pull/13727)) - -### Packaging - -* Added a Czech localization. ([#13782](https://github.com/mapbox/mapbox-gl-native/pull/13782)) - -### Other changes - -* Reinstates version 11 as the default Mapbox Streets style (as introduced in 4.7.0). ([#13690](https://github.com/mapbox/mapbox-gl-native/pull/13690)) -* `MLNMapView` no longer freezes on external displays connected through AirPlay or CarPlay when the main device’s screen goes to sleep or the user manually locks the screen. ([#13701](https://github.com/mapbox/mapbox-gl-native/pull/13701)) -* Fixed an issue calculating the viewport when setting visible coordinates with a `direction`. ([#13761](https://github.com/mapbox/mapbox-gl-native/pull/13761)) - -## 4.7.1 - December 21, 2018 - -### Styles and rendering - -* Reverts the ability for `MLNMapView`, `MLNShapeOfflineRegion`, and `MLNTilePyramidOfflineRegion` to use version 11 of the Mapbox Streets style. ([#13650](https://github.com/mapbox/mapbox-gl-native/pull/13650)) -* Reverts the ability for convenience methods on `MLNStyle` such as `MLNStyle.lightStyleURL`, to use version 11 of the Mapbox Streets style. ([#13650](https://github.com/mapbox/mapbox-gl-native/pull/13650)) - -## 4.7.0 - December 18, 2018 - -### Packaging - -* Added the `Mapbox-iOS-SDK-stripped` build flavor, featuring fewer debug symbols. Regular framework binaries are no longer stripped of debug symbols and the `Mapbox-iOS-SDK-symbols` build has been retired. ([#13504](https://github.com/mapbox/mapbox-gl-native/pull/13504)) -* This SDK’s dynamic framework now has a bundle identifier of `com.mapbox.Mapbox`. ([#12857](https://github.com/mapbox/mapbox-gl-native/pull/12857)) -* `MLNMapView`, `MLNShapeOfflineRegion`, and `MLNTilePyramidOfflineRegion` now default to version 11 of the Mapbox Streets style. Similarly, several class properties of `MLNStyle`, such as `MLNStyle.lightStyleURL`, have been updated to return URLs to new versions of their respective styles. ([#13585](https://github.com/mapbox/mapbox-gl-native/pull/13585)) - -### Styles and rendering - -* Fixed an issue where the `{prefix}` token in tile URL templates was evaluated incorrectly when requesting a source’s tiles. ([#13429](https://github.com/mapbox/mapbox-gl-native/pull/13429)) -* Added an `-[MLNStyle removeSource:error:]` method that returns a descriptive error if the style fails to remove the source, whereas `-[MLNStyle removeSource:]` fails silently. ([#13399](https://github.com/mapbox/mapbox-gl-native/pull/13399)) -* Added the `MLNFillExtrusionStyleLayer.fillExtrusionHasVerticalGradient` property. ([#13463](https://github.com/mapbox/mapbox-gl-native/pull/13463)) -* Added support for setting `MLNCollisionBehaviorPre4_0` in `NSUserDefaults`. ([#13426](https://github.com/mapbox/mapbox-gl-native/pull/13426)) -* `-[MLNStyle localizeLabelsIntoLocale:]` and `-[NSExpression(MLNAdditions) mgl_expressionLocalizedIntoLocale:]` can automatically localize styles that use version 8 of the Mapbox Streets source. ([#13481](https://github.com/mapbox/mapbox-gl-native/pull/13481)) -* Fixed symbol flickering during instantaneous transitions. ([#13535](https://github.com/mapbox/mapbox-gl-native/pull/13535)) -* Fixed a crash when specifying `MLNShapeSourceOptionLineDistanceMetrics` when creating an `MLNShapeSource`. ([#13543](https://github.com/mapbox/mapbox-gl-native/pull/13543)) - -### Map snapshots - -* `MLNMapSnapshotter` now respects the `MLNIdeographicFontFamilyName` key in Info.plist, which reduces bandwidth consumption when snapshotting regions that contain Chinese or Japanese characters. ([#13427](https://github.com/mapbox/mapbox-gl-native/pull/13427)) -* Fixed a sporadic crash when using `MLNMapSnapshotter`. ([#13300](https://github.com/mapbox/mapbox-gl-native/pull/13300)) - -### Other changes - -* Modified the behavior of the map view so that programmatic camera transitions can no longer be interrupted by user interaction when `MLNMapView.zoomEnabled`, `MLNMapView.rotateEnabled`, `MLNMapView.scrollEnabled`, and `MLNMapView.pitchEnabled` are set to false. ([#13362](https://github.com/mapbox/mapbox-gl-native/pull/13362)) -* Renamed `-[MLNOfflineStorage putResourceWithUrl:data:modified:expires:etag:mustRevalidate:]` to `-[MLNOfflineStorage preloadData:forURL:modificationDate:expirationDate:eTag:mustRevalidate:]`. ([#13318](https://github.com/mapbox/mapbox-gl-native/pull/13318)) -* Points of interest have clearer, localized VoiceOver hints in styles that use version 8 of the Mapbox Streets source. ([#13525](https://github.com/mapbox/mapbox-gl-native/pull/13525)) -* Added `MLNLoggingConfiguration` and `MLNLoggingBlockHandler` that handle error and fault events produced by the SDK. ([#13235](https://github.com/mapbox/mapbox-gl-native/pull/13235)) -* Fixed random crashes during app termination. ([#13367](https://github.com/mapbox/mapbox-gl-native/pull/13367)) - -## 4.6.0 - November 7, 2018 - -### Styles and rendering - -* `MLNSymbolStyleLayer.text` can now be set to rich text with varying fonts and text sizes. ([#12624](https://github.com/mapbox/mapbox-gl-native/pull/12624)) -* Fixed a crash when using the `MLN_LET`, `MLN_MATCH`, `MLN_IF`, or `MLN_FUNCTION` functions without a colon inside an `NSExpression` or `NSPredicate` format string. ([#13189](https://github.com/mapbox/mapbox-gl-native/pull/13189)) -* Fixed a crash setting the `MLNLineStyleLayer.lineGradient` property to an expression containing the `$lineProgress` variable. Added an `NSExpression.lineProgressVariableExpression` class property that returns an expression for the `$lineProgress` variable. ([#13192](https://github.com/mapbox/mapbox-gl-native/pull/13192)) -* Feature querying can now return point features represented by icons that have both the `MLNSymbolStyleLayer.iconRotation` and `MLNSymbolStyleLayer.iconOffset` properties applied. ([#13105](https://github.com/mapbox/mapbox-gl-native/pull/13105)) -* Fixed an issue where polygons crossing tile boundaries could be improperly clipped. ([#13231](https://github.com/mapbox/mapbox-gl-native/pull/13231)) - -### Offline maps - -* Network requests by `MLNMapView` are now prioritized over offline pack downloads. ([#13019](https://github.com/mapbox/mapbox-gl-native/pull/13019)) -* Added the `-[MLNOfflineStorage putResourceWithUrl:data:modified:expires:etag:mustRevalidate:]` method to allow pre-warming of the ambient cache. ([#13119](https://github.com/mapbox/mapbox-gl-native/pull/13119)) - -### Other changes - -* Fixed an issue where the map view could not be panned after setting `MLNMapView.visibleCoordinateBounds` to a coordinate bounds that spanned exactly the longitudes −180° and 180°. ([#13006](https://github.com/mapbox/mapbox-gl-native/pull/13006)) -* Fixed an issue where snapshots had the wrong heading and pitch. ([#13123](https://github.com/mapbox/mapbox-gl-native/pull/13123)) -* Fixed an issue where `-[MLNMapViewDelegate mapView:shouldChangeFromCamera:toCamera:]` was called with an incorrectly rotated `newCamera` when the user rotated the map. ([#13123](https://github.com/mapbox/mapbox-gl-native/pull/13123)) - -## 4.5.0 - October 10, 2018 - -### Styles and rendering - -* Added support for 120 frames per second on capable devices. ([#12979](https://github.com/mapbox/mapbox-gl-native/pull/12979)) -* Added an `MLNSymbolStyleLayer.symbolZOrder` property for forcing point features in a symbol layer to be layered in the same order that they are specified in the layer’s associated source. ([#12783](https://github.com/mapbox/mapbox-gl-native/pull/12783)) -* Fixed a crash when the `MLNBackgroundStyleLayer.backgroundPattern`, `MLNFillExtrusionStyleLayer.fillExtrusionPattern`, `MLNFillStyleLayer.fillPattern`, or `MLNLineStyleLayer.linePattern` property evaluates to `nil` for a particular feature. ([#12896](https://github.com/mapbox/mapbox-gl-native/pull/12896)) -* Fixed an issue with view annotations (including the user location annotation) and the GL map lagging relative to each other. ([#12895](https://github.com/mapbox/mapbox-gl-native/pull/12895)) -* Fixed an issue where features in `MLNFillStyleLayer` and `MLNLineStyleLayer` would occasionally flicker when zooming in and out. ([#12982](https://github.com/mapbox/mapbox-gl-native/pull/12982)) -* Fixed a crash when casting a `UIColor` to a `UIColor` inside an `NSExpression`. ([#12864](https://github.com/mapbox/mapbox-gl-native/pull/12864)) -* `NIL` cast to an `NSNumber` now evaluates to 0 inside an `NSExpression`. ([#12864](https://github.com/mapbox/mapbox-gl-native/pull/12864)) -* Fixed a crash when applying the `to-array` operator to an empty array inside a JSON expression. ([#12864](https://github.com/mapbox/mapbox-gl-native/pull/12864)) -* Added the `MLNCollisionBehaviorPre4_0` Info.plist key to restore the collision detection behavior in version 3.7 of the SDK. ([#12941](https://github.com/mapbox/mapbox-gl-native/pull/12941)) - -### User location - -* Added `-[MLNMapViewDelegate mapViewUserLocationAnchorPoint:]` to customize the position of the user location annotation. ([#12907](https://github.com/mapbox/mapbox-gl-native/pull/12907)) -* Marked `MLNMapView.userLocationVerticalAlignment` as deprecated. Use `-[MLNMapViewDelegate mapViewUserLocationAnchorPoint:]` instead. ([#12907](https://github.com/mapbox/mapbox-gl-native/pull/12907)) -* Added the `-[MLNMapView updateUserLocationAnnotationView]` and `-[MLNMapView updateUserLocationAnnotationViewAnimatedWithDuration:]` methods to update the position of the user location annotation between location updates. ([#12907](https://github.com/mapbox/mapbox-gl-native/pull/12907)) -* Fixed an issue where the user location annotation was positioned incorrectly when the map view had a left or right content inset. ([#12907](https://github.com/mapbox/mapbox-gl-native/pull/12907)) - -### Offline maps - -* Added `-[MLNOfflineStorage addContentsOfFile:withCompletionHandler:]` and `-[MLNOfflineStorage addContentsOfURL:withCompletionHandler:]` methods to add pregenerated offline packs to offline storage. ([#12791](https://github.com/mapbox/mapbox-gl-native/pull/12791)) -* Fixed an issue where some tiles were rendered incorrectly when the device was unable to connect to the Internet. ([#12931](https://github.com/mapbox/mapbox-gl-native/pull/12931)) - -### Other changes - -* Added `MLNAltitudeForZoomLevel()` and `MLNZoomLevelForAltitude()` methods for converting between zoom levels used by `MLNMapView` and altitudes used by `MLNMapCamera`. ([#12986](https://github.com/mapbox/mapbox-gl-native/pull/12986)) -* Deprecated the `+[MLNMapCamera cameraLookingAtCenterCoordinate:fromDistance:pitch:heading:]` method in favor of `+[MLNMapCamera cameraLookingAtCenterCoordinate:altitude:pitch:heading:]` and `+[MLNMapCamera cameraLookingAtCenterCoordinate:acrossDistance:pitch:heading:]`. ([#12966](https://github.com/mapbox/mapbox-gl-native/pull/12966)) -* Fixed an issue where `+[MLNMapCamera cameraLookingAtCenterCoordinate:fromEyeCoordinate:eyeAltitude:]` created a camera looking from the wrong eye coordinate. ([#12966](https://github.com/mapbox/mapbox-gl-native/pull/12966)) -* Added an `MLNMapCamera.viewingDistance` property based on the existing `MLNMapCamera.altitude` property. ([#12966](https://github.com/mapbox/mapbox-gl-native/pull/12966)) -* Fixed an issue where `-[MLNMapSnapshotter startWithQueue:completionHandler:]` failed to call its completion handler in some cases. ([#12355](https://github.com/mapbox/mapbox-gl-native/pull/12355)) -* Fixed an issue where symbols from the events library could be duplicated when the maps SDK was used in conjunction with another Mapbox framework. ([#13008](https://github.com/mapbox/mapbox-gl-native/pull/13008)) - -## 4.4.1 - September 13, 2018 - -* Fixed several crashes related to telemetry collection. ([#12825](https://github.com/mapbox/mapbox-gl-native/pull/12825)) -* Fixed a crash when the network connection was offline. ([#12889](https://github.com/mapbox/mapbox-gl-native/pull/12889)) - -## 4.4.0 - September 12, 2018 - -### Styles and rendering - -* When a symbol in an `MLNSymbolStyleLayer` has both an icon and text, both are shown or hidden together based on available space. ([#12521](https://github.com/mapbox/mapbox-gl-native/pull/12521)) -* Invalid values of `MLNSymbolStyleLayer.textFontNames` are treated as warnings instead of errors. ([#12414](https://github.com/mapbox/mapbox-gl-native/pull/12414)) -* Added an `MLNLineStyleLayer.lineGradient` property that can be used to define a gradient with which to color a line feature. ([#12575](https://github.com/mapbox/mapbox-gl-native/pull/12575)) -* The `MLNLineStyleLayer.linePattern`, `MLNFillStyleLayer.fillPattern`, and `MLNFillExtrusionStyleLayer.fillExtrusionPattern` properties can now be set to expressions that refer to feature attributes. ([#12284](https://github.com/mapbox/mapbox-gl-native/pull/12284)) -* Reduced the amount of memory consumed by font data after changing the style. ([#12414](https://github.com/mapbox/mapbox-gl-native/pull/12414)) -* `-[MLNShapeSource initWithIdentifier:shape:options:]` warns about possible attribute loss when passing in an `MLNShapeCollection` object. ([#12625](https://github.com/mapbox/mapbox-gl-native/pull/12625)) -* Added an `MLNShapeSourceOptionLineDistanceMetrics` option that enables or disables calculating line distance metrics. ([#12604](https://github.com/mapbox/mapbox-gl-native/pull/12604)) -* Fixed an issue where the `cubic-bezier` curve type for `mgl_interpolate:withCurveType:parameters:stops:` expressions was misinterpreted for some style layer properties. ([#12826](https://github.com/mapbox/mapbox-gl-native/pull/12826)) -* Fixed an issue that could cause symbols to fade in during pan operations instead of always showing when using `MLNSymbolStyleLayer.iconAllowsOverlap` or `MLNSymbolStyleLayer.textAllowsOverlap` properties. ([#12698](https://github.com/mapbox/mapbox-gl-native/pull/12698)) - -### Offline maps - -* Added the `MLNShapeOfflineRegion` class for creating an offline pack that covers an arbitrary shape. ([#11447](https://github.com/mapbox/mapbox-gl-native/pull/11447)) -* Fixed crashes when offline storage encountered certain SQLite errors. ([#12224](https://github.com/mapbox/mapbox-gl-native/pull/12224)) - -### Other changes - -* The predefined values of `MLNMapView.decelerationRate` are now typed as `MLNMapViewDecelerationRate`s for improved bridging to Swift. ([#12584](https://github.com/mapbox/mapbox-gl-native/pull/12584)) -* Added an `-[MLNMapViewDelegate mapView:shapeAnnotationIsEnabled:]` method to specify whether an annotation is selectable. ([#12352](https://github.com/mapbox/mapbox-gl-native/pull/12352)) -* The `-[MLNMapView visibleFeaturesAtPoint:]` method can now return features near tile boundaries at high zoom levels. ([#12570](https://github.com/mapbox/mapbox-gl-native/pull/12570)) -* Fixed inconsistencies in exception naming. ([#12583](https://github.com/mapbox/mapbox-gl-native/issues/12583)) -* Fixed an issue where `-[MLNMapView convertCoordinateBounds:toRectToView:]` would return an empty CGRect if the bounds crossed the antimeridian. ([#12758](https://github.com/mapbox/mapbox-gl-native/pull/12758)) - -## 4.3.0 - August 15, 2018 - -### Styles and rendering - -* Added an `MLNMapView.preferredFramesPerSecond` property that controls the rate at which the map view is rendered. The default rate now adapts to device capabilities to provide a smoother experience. ([#12501](https://github.com/mapbox/mapbox-gl-native/issues/12501)) -* Token string syntax (`"{token}"`) in `MLNSymbolStyleLayer` `text` and `iconImageName` properties is now correctly converted to the appropriate `NSExpression` equivalent. ([#11659](https://github.com/mapbox/mapbox-gl-native/issues/11659)) -* Fixed a crash when switching between two styles having layers with the same identifier but different layer types. ([#12432](https://github.com/mapbox/mapbox-gl-native/issues/12432)) -* Added a new option to `MLNSymbolPlacement`, `MLNSymbolPlacementLineCenter`, that places the label relative to the center of the geometry. ([#12337](https://github.com/mapbox/mapbox-gl-native/pull/12337)) - -### User location - -* Added an `MLNMapView.locationManager` property and `MLNLocationManager` protocol for tracking user location using a custom alternative to `CLLocationManager`. ([#12013](https://github.com/mapbox/mapbox-gl-native/pull/12013)) -* Fixed a crash that occurred when `MMELocationManager` was deallocated and the delegate was reporting updates. ([#12542](https://github.com/mapbox/mapbox-gl-native/pull/12542)) - -### Other changes - -* Fixed a crash that occurred when the user started a gesture before the drift animation for a previous gesture was complete. ([#12148](https://github.com/mapbox/mapbox-gl-native/pull/12148)) -* Fixed an issue where the symbols for `MLNMapPointForCoordinate` could not be found. ([#12445](https://github.com/mapbox/mapbox-gl-native/issues/12445)) -* Fixed an issue causing country and ocean labels to disappear after calling `-[MLNStyle localizeLabelsIntoLocale:]` when the system language is set to Simplified Chinese. ([#12164](https://github.com/mapbox/mapbox-gl-native/issues/12164)) -* Closed a security vulnerability introduced in 4.1.0 that would potentially allow the owner of a style to compromise apps loading that style. ([#12571](https://github.com/mapbox/mapbox-gl-native/pull/12571)) -* Reduced binary size and improved performance by enabling LTO. ([#12502](https://github.com/mapbox/mapbox-gl-native/pull/12502)) - -## 4.0.5 - August 15, 2018 - -### Packaging - -* When integrating this framework using CocoaPods, the included bcsymbolmap files are now preserved. If you have bitcode enabled and you are seeing incorrectly symbolicated crash logs, you should create a build phase in your Xcode project that copies these bcsymbolmap files to your app’s Products Directory when installing. ([#12257](https://github.com/mapbox/mapbox-gl-native/pull/12257)) - -### Other changes - -* Added an `MLNMapView.locationManager` property and `MLNLocationManager` protocol for tracking user location using a custom alternative to `CLLocationManager`. ([#12013](https://github.com/mapbox/mapbox-gl-native/pull/12013)) - -## 4.2.0 - July 18, 2018 - -### Packaging - -* When integrating this framework using CocoaPods, the included bcsymbolmap files are now preserved. If you have bitcode enabled and you are seeing incorrectly symbolicated crash logs, you should create a build phase in your Xcode project that copies these bcsymbolmap files to your app’s Products Directory when installing. ([#12257](https://github.com/mapbox/mapbox-gl-native/pull/12257)) - -### Styles and rendering - -* Added an `MLNRasterStyleLayer.rasterResamplingMode` property for configuring how raster style layers are overscaled. ([#12176](https://github.com/mapbox/mapbox-gl-native/pull/12176)) -* `-[MLNStyle localizeLabelsIntoLocale:]` and `-[NSExpression mgl_expressionLocalizedIntoLocale:]` can automatically localize labels into Japanese or Korean based on the system’s language settings. ([#12286](https://github.com/mapbox/mapbox-gl-native/pull/12286)) -* The `c` and `d` options are supported within comparison predicates for case and diacritic insensitivity, respectively. ([#12329](https://github.com/mapbox/mapbox-gl-native/pull/12329)) -* Added the `collator` and `resolved-locale` expression operators to more precisely compare strings in style JSON. A subset of this functionality is available through predicate options when creating an `NSPredicate`. ([#11869](https://github.com/mapbox/mapbox-gl-native/pull/11869)) -* Fixed a crash when trying to parse expressions containing legacy filters. ([#12263](https://github.com/mapbox/mapbox-gl-native/pull/12263)) -* Fixed a crash that occurred when creating an `MLN_MATCH` expression using non-expressions as arguments. ([#12332](https://github.com/mapbox/mapbox-gl-native/pull/12332)) - -### Networking and storage - -* Improved caching performance. ([#12072](https://github.com/mapbox/mapbox-gl-native/pull/12072)) - -### Other changes - -* Added `-[MLNMapView camera:fittingShape:edgePadding:]` and `-[MLNMapView camera:fittingCoordinateBounds:edgePadding:]` allowing you specify the pitch and direction for the calculated camera. ([#12213](https://github.com/mapbox/mapbox-gl-native/pull/12213)) -* Added `-[MLNMapSnapshot coordinateForPoint:]` that returns a map coordinate for a specified snapshot image point. ([#12221](https://github.com/mapbox/mapbox-gl-native/pull/12221)) -* Reduced memory usage when collision debug mode is disabled. ([#12294](https://github.com/mapbox/mapbox-gl-native/issues/12294)) -* Fixed a bug with annotation view touch handling when a non-zero `centerOffset` is specified. ([#12234](https://github.com/mapbox/mapbox-gl-native/pull/12234)) - -## 4.0.4 - June 27, 2018 - -* Improved compatibility with Mapbox China APIs. ([#12233](https://github.com/mapbox/mapbox-gl-native/pull/12233)) - -## 4.0.3 - June 22, 2018 - -* Fixed a crash in `-[MLNStyle localizeLabelsIntoLocale:]` on iOS 9._x_. ([#12123](https://github.com/mapbox/mapbox-gl-native/pull/12123)) -* Improved compatibility with Mapbox China APIs. ([#11845](https://github.com/mapbox/mapbox-gl-native/pull/11845)) - -## 4.1.0 - June 20, 2018 - -### Packaging - -* The minimum deployment target for this SDK is now iOS 9.0. ([#11776](https://github.com/mapbox/mapbox-gl-native/pull/11776)) -* Removed support for the Fabric distribution platform. ([#12106](https://github.com/mapbox/mapbox-gl-native/pull/12106)) -* Improved compatibility with Mapbox China APIs. ([#11845](https://github.com/mapbox/mapbox-gl-native/pull/11845)) - -### Styles and rendering - -* Added support for aggregate expressions as input values to `MLN_MATCH` expressions. ([#11866](https://github.com/mapbox/mapbox-gl-native/pull/11866)) -* Fixed a crash that occurred when style JSON contained an invalid filter containing an expression. ([#12065](https://github.com/mapbox/mapbox-gl-native/pull/12065)) -* Fixed a crash in `-[MLNStyle localizeLabelsIntoLocale:]` on iOS 9._x_. ([#12123](https://github.com/mapbox/mapbox-gl-native/pull/12123)) -* Unknown tokens in URLs are now preserved, rather than replaced with an empty string. ([#11787](https://github.com/mapbox/mapbox-gl-native/issues/11787)) -* Fixed an issue preventing nested key path expressions from accessing the correct feature attributes. ([#11959](https://github.com/mapbox/mapbox-gl-native/pull/11959)) -* Fixed an issue where `MLNSymbolStyleLayer` flickered when straddling the antimeridian. ([#11938](https://github.com/mapbox/mapbox-gl-native/pull/11938)) -* Fixed an issue where certain `MLNLineStyleLayer.lineDashPattern` values produced unexpected rendering. ([#12114](https://github.com/mapbox/mapbox-gl-native/pull/12114)) - -### Other changes - -* Adjusted when and how the camera transition update and finish callbacks are called, fixing recursion bugs. ([#11614](https://github.com/mapbox/mapbox-gl-native/pull/11614)) -* Fixed an issue where `-[MLNMapViewDelegate mapView:tapOnCalloutForAnnotation:]` was called when the user tapped on transparent areas beneath the standard callout view. ([#11939](https://github.com/mapbox/mapbox-gl-native/pull/11939)) -* Improved `MLNMapView`’s performance when the scale bar is shown. ([#11921](https://github.com/mapbox/mapbox-gl-native/pull/11921)) -* Fixed a crash that could occur when reusing `MLNMapSnapshotter` or using multiple snapshotters at the same time. ([#11831](https://github.com/mapbox/mapbox-gl-native/pull/11831)) -* Fixed an issue where an empty `MLNFeature` array caused high CPU utilization. ([#11985](https://github.com/mapbox/mapbox-gl-native/pull/11985)) -* Improved offline download performance. ([#11284](https://github.com/mapbox/mapbox-gl-native/pull/11284)) -* Fixed an issue that caused `-[MLNMapView visibleFeaturesAtPoint:]` to return an empty array when adding or removing features. ([#12076](https://github.com/mapbox/mapbox-gl-native/pull/12076)) -* Improved application launch performance. ([#11784](https://github.com/mapbox/mapbox-gl-native/pull/11784)) - -## 4.0.2 - May 29, 2018 - -* Fixed a crash when constant expressions were used for style properties that didn't support data-driven styling. ([#11960](https://github.com/mapbox/mapbox-gl-native/issues/11960)) -* Improved symbol querying. ([#11571](https://github.com/mapbox/mapbox-gl-native/pull/11571), [#11742](https://github.com/mapbox/mapbox-gl-native/pull/11742)) - -## 4.0.1 - May 14, 2018 - -### Packaging - -* Re-added support for 32-bit simulators (i386) to work around an issue in CocoaPods. ([#11891](https://github.com/mapbox/mapbox-gl-native/pull/11891)) -* Added a Korean localization. ([#11792](https://github.com/mapbox/mapbox-gl-native/pull/11792)) - -### Style layers - -* Deprecated `+[NSExpression featurePropertiesVariableExpression]`; use `+[NSExpression featureAttributesVariableExpression]` instead. ([#11748](https://github.com/mapbox/mapbox-gl-native/pull/11748)) -* Added an `-[NSPredicate(MLNAdditions) predicateWithMLNJSONObject:]` method and `NSPredicate.mgl_jsonExpressionObject` property. ([#11810](https://github.com/mapbox/mapbox-gl-native/pull/11810)) -* Added `FIRST`, `LAST`, and `SIZE` symbolic array subscripting support to expressions. ([#11770](https://github.com/mapbox/mapbox-gl-native/pull/11770)) -* Inside an expression, casting `nil` to a string turns it into the empty string instead of the string `"null"`. ([#11904](https://github.com/mapbox/mapbox-gl-native/pull/11904)) -* Fixed an issue where certain colors were being misrepresented in `NSExpression` obtained from `MLNStyleLayer` getters. ([#11725](https://github.com/mapbox/mapbox-gl-native/pull/11725)) - -### Annotations - -* Fixed an issue where selecting an onscreen annotation could move the map unintentionally. ([#11731](https://github.com/mapbox/mapbox-gl-native/pull/11731)) -* Fixed an issue where annotation views could become distorted if `rotatesToMatchCamera` was enabled. ([#11817](https://github.com/mapbox/mapbox-gl-native/pull/11817)) -* Fixed `MLNAnnotationView.rotatesToMatchCamera` overriding other transforms that might be applied to annotation views that had this property enabled. ([#11842](https://github.com/mapbox/mapbox-gl-native/pull/11842)) -* Fixed an issue where an `MLNOverlay` object straddling the antimeridian had an empty `MLNOverlay.overlayBounds` value. ([#11783](https://github.com/mapbox/mapbox-gl-native/pull/11783)) - -### Other changes - -* If English is the first language listed in the user’s Preferred Languages setting, `-[MLNStyle localizeLabelsIntoLocale:]` no longer prioritizes other languages over English. ([#11907](https://github.com/mapbox/mapbox-gl-native/pull/11907)) -* Fixed an issue where `-[MLNMapView metersPerPixelAtLatitude:]` was removed, but not marked as unavailable. ([#11765](https://github.com/mapbox/mapbox-gl-native/pull/11765)) -* Reduced per-frame render CPU time. ([#11811](https://github.com/mapbox/mapbox-gl-native/issues/11811)) - -## 3.7.8 - May 7, 2018 - -* Improved compatibility with Mapbox China APIs. ([#11845](https://github.com/mapbox/mapbox-gl-native/pull/11845)) - -## 3.7.7 - May 3, 2018 - -* Fixed a crash when removing an `MLNOfflinePack`. ([#11821](https://github.com/mapbox/mapbox-gl-native/issues/11821)) - -## 4.0.0 - April 19, 2018 - -The 4.0._x_ series of releases will be the last to support iOS 8. The minimum iOS deployment version will increase to iOS 9.0 in a future release. - -### Packaging - -* Removed support for 32-bit simulators. ([#10962](https://github.com/mapbox/mapbox-gl-native/pull/10962)) -* Added Danish, Hebrew, and European Portuguese localizations. ([#10967](https://github.com/mapbox/mapbox-gl-native/pull/10967), [#11136](https://github.com/mapbox/mapbox-gl-native/pull/11134), [#11695](https://github.com/mapbox/mapbox-gl-native/pull/11695)) -* Removed methods, properties, and constants that had been deprecated as of v3.7.6. ([#11205](https://github.com/mapbox/mapbox-gl-native/pull/11205), [#11681](https://github.com/mapbox/mapbox-gl-native/pull/11681)) -* Refined certain Swift interfaces by converting them from class methods to class properties. ([#11674](https://github.com/mapbox/mapbox-gl-native/pull/11674)) -* Revamped the “Adding Points to a Map” guide. ([#11496](https://github.com/mapbox/mapbox-gl-native/pull/11496)) - -### Style layers - -* The layout and paint properties on subclasses of `MLNStyleLayer` are now of type `NSExpression` instead of `MLNStyleValue`. A new “Predicates and Expressions” guide provides an overview of the supported operators, which include arithmetic and conditional operators. ([#10726](https://github.com/mapbox/mapbox-gl-native/pull/10726)) -* A style can now display a heatmap layer that visualizes a point data distribution. You can customize the appearance at runtime using the `MLNHeatmapStyleLayer` class. ([#11046](https://github.com/mapbox/mapbox-gl-native/pull/11046)) -* A style can now display a smooth hillshading layer and customize its appearance at runtime using the `MLNHillshadeStyleLayer` class. Hillshading is based on a rasterized digital elevation model supplied by the `MLNRasterDEMSource` class. ([#10642](https://github.com/mapbox/mapbox-gl-native/pull/10642)) -* You can now set the `MLNVectorStyleLayer.predicate` property to a predicate that contains arithmetic and calls to built-in `NSExpression` functions. You may need to cast a feature attribute key to `NSString` or `NSNumber` before comparing it to a string or number. ([#11587](https://github.com/mapbox/mapbox-gl-native/pull/11587)) -* Replaced the `MLNStyle.localizesLabels` property with an `-[MLNStyle localizeLabelsIntoLocale:]` method that allows you to specify the language to localize into. Also added an `-[NSExpression(MLNAdditions) mgl_expressionLocalizedIntoLocale:]` method for localizing an individual value used with `MLNSymbolStyleLayer.text`. ([#11651](https://github.com/mapbox/mapbox-gl-native/pull/11651)) -* The `MLNSymbolStyleLayer.textFontNames` property can now depend on a feature’s attributes. ([#10850](https://github.com/mapbox/mapbox-gl-native/pull/10850)) -* Changes to the `MLNStyleLayer.minimumZoomLevel` and `MLNStyleLayer.maximumZoomLevel` properties take effect immediately. ([#11399](https://github.com/mapbox/mapbox-gl-native/pull/11399)) - -### Content sources - -* Renamed `MLNRasterSource` to `MLNRasterTileSource` and `MLNVectorSource` to `MLNVectorTileSource`. ([#11568](https://github.com/mapbox/mapbox-gl-native/pull/11568)) -* Added an `MLNComputedShapeSource` class that allows applications to supply vector data to a style layer on a per-tile basis. ([#9983](https://github.com/mapbox/mapbox-gl-native/pull/9983)) -* Properties such as `MLNSymbolStyleLayer.iconAllowsOverlap` and `MLNSymbolStyleLayer.iconIgnoresPlacement` now account for symbols in other sources. ([#10436](https://github.com/mapbox/mapbox-gl-native/pull/10436)) - -### Map rendering - -* Improved the reliability of collision detection between symbols near the edges of tiles, as well as between symbols when the map is tilted. It is no longer necessary to enable `MLNSymbolStyleLayer.symbolAvoidsEdges` to prevent symbols in adjacent tiles from overlapping with each other. ([#10436](https://github.com/mapbox/mapbox-gl-native/pull/10436)) -* Symbols can fade in and out as the map pans, rotates, or tilts. ([#10436](https://github.com/mapbox/mapbox-gl-native/pull/10436)) -* Fixed an issue preventing a dynamically-added `MLNRasterStyleLayer` from drawing until the map pans. ([#10270](https://github.com/mapbox/mapbox-gl-native/pull/10270)) -* Fixed an issue preventing `MLNImageSource`s from drawing on the map when the map is zoomed in and tilted. ([#10677](https://github.com/mapbox/mapbox-gl-native/pull/10677)) -* Improved the sharpness of raster tiles on Retina displays. ([#10984](https://github.com/mapbox/mapbox-gl-native/pull/10984)) -* Fixed a crash parsing a malformed style. ([#11001](https://github.com/mapbox/mapbox-gl-native/pull/11001)) -* Reduced memory usage by clearing in-memory tile cache before entering background. ([#11197](https://github.com/mapbox/mapbox-gl-native/pull/11197)) -* Fixed an issue where symbols with empty labels would always be hidden. ([#11206](https://github.com/mapbox/mapbox-gl-native/pull/11206)) -* Fixed an issue where a tilted map could flicker while displaying rotating symbols. ([#11488](https://github.com/mapbox/mapbox-gl-native/pull/11488)) -* Increased the maximum width of labels by a factor of two. ([#11508](https://github.com/mapbox/mapbox-gl-native/pull/11508)) - -### Annotations - -* Changed the default value of `MLNAnnotationView.scalesWithViewingDistance` to `NO`, to improve performance. If your use case involves many annotation views, consider keeping this property disabled. ([#11636](https://github.com/mapbox/mapbox-gl-native/pull/11636)) -* Fixed an issue preventing `MLNAnnotationImage.image` from being updated. ([#10372](https://github.com/mapbox/mapbox-gl-native/pull/10372)) -* Improved performance of `MLNAnnotationView`-backed annotations that have `scalesWithViewingDistance` enabled. ([#10951](https://github.com/mapbox/mapbox-gl-native/pull/10951)) -* Fixed an issue where tapping a group of annotations may not have selected the nearest annotation. ([#11438](https://github.com/mapbox/mapbox-gl-native/pull/11438)) -* The `MLNMapView.selectedAnnotations` property (backed by `-[MLNMapView setSelectedAnnotations:]`) now selects annotations that are off-screen. ([#9790](https://github.com/mapbox/mapbox-gl-native/issues/9790)) -* The `animated` parameter to `-[MLNMapView selectAnnotation:animated:]` now controls whether the annotation and its callout are brought on-screen. If `animated` is `NO` then the annotation is selected if offscreen, but the map is not panned. Currently only point annotations are supported. Setting the `MLNMapView.selectedAnnotations` property now animates. ([#3249](https://github.com/mapbox/mapbox-gl-native/issues/3249)) -* Fixed a crash when rapidly adding and removing annotations. ([#11551](https://github.com/mapbox/mapbox-gl-native/issues/11551), [#11575](https://github.com/mapbox/mapbox-gl-native/issues/11575)) -* Marked protocol method `-[MLNCalloutView presentCalloutFromRect:inView:constrainedToView:animated:]` as unavailable. Use `-[MLNCalloutView presentCalloutFromRect:inView:constrainedToRect:animated:]` instead. ([#11738](https://github.com/mapbox/mapbox-gl-native/pull/11738)) - -### Map snapshots - -* Fixed a memory leak that occurred when creating a map snapshot. ([#10585](https://github.com/mapbox/mapbox-gl-native/pull/10585)) - -### Other changes - -* The `-[MLNMapView convertRect:toCoordinateBoundsFromView:]` method and the `MLNMapView.visibleCoordinateBounds` property’s getter now indicate that the coordinate bounds straddles the antimeridian by extending one side beyond ±180 degrees longitude. ([#11265](https://github.com/mapbox/mapbox-gl-native/pull/11265)) -* Feature querying results now account for the `MLNSymbolStyleLayer.circleStrokeWidth` property. ([#10897](https://github.com/mapbox/mapbox-gl-native/pull/10897)) -* Fixed an issue preventing labels from being transliterated when VoiceOver was enabled on iOS 10._x_ and below. ([#10881](https://github.com/mapbox/mapbox-gl-native/pull/10881)) -* Labels are now transliterated from more languages when VoiceOver is enabled. ([#10881](https://github.com/mapbox/mapbox-gl-native/pull/10881)) -* Long-pressing the attribution button causes the SDK’s version number to be displayed in the action sheet that appears. ([#10650](https://github.com/mapbox/mapbox-gl-native/pull/10650)) -* Reduced offline download sizes for styles with symbol layers that render only icons, and no text. ([#11055](https://github.com/mapbox/mapbox-gl-native/pull/11055)) -* Added haptic feedback that occurs when the user rotates the map to due north, configurable via `MLNMapView.hapticFeedbackEnabled`. ([#10847](https://github.com/mapbox/mapbox-gl-native/pull/10847)) -* Added `MLNMapView.showsScale` as the recommended way to show the scale bar. This property can be set directly in Interface Builder. ([#11335](https://github.com/mapbox/mapbox-gl-native/pull/11335)) -* Fixed an issue where the scale bar would not appear until the map had moved. ([#11335](https://github.com/mapbox/mapbox-gl-native/pull/11335)) - -## 3.7.6 - March 12, 2018 - -* Fixed an issue where full-resolution tiles could fail to replace lower-resolution placeholders. ([#11227](https://github.com/mapbox/mapbox-gl-native/pull/11227)) -* Fixed an issue where tilesets with bounds that cover the entire world would fail to render. ([#11425](https://github.com/mapbox/mapbox-gl-native/pull/11425)) -* Fixed a memory leak in `MLNMapSnapshotter`. ([#11193](https://github.com/mapbox/mapbox-gl-native/pull/11193)) -* Fixed an issue where the pinch gesture could drift beyond bounds imposed by `-[MLNMapViewDelegate mapView:shouldChangeFromCamera:toCamera:]`. ([#11423](https://github.com/mapbox/mapbox-gl-native/pull/11423)) -* Improved the visibility of the heading indicator arrow. ([#11337](https://github.com/mapbox/mapbox-gl-native/pull/11337)) - -## 3.7.5 - February 16, 2018 - -* Fixed an issue where requesting location services permission would trigger an unrecoverable loop. ([#11229](https://github.com/mapbox/mapbox-gl-native/pull/11229)) - -## 3.7.4 - February 12, 2018 - -* Added the `MLNTileSourceOptionTileCoordinateBounds` option to create an `MLNTileSource` that only supplies tiles within a specific geographic bounding box. ([#11141](https://github.com/mapbox/mapbox-gl-native/pull/11141)) -* Fixed an issue that caused `-[MLNMapSnapshotter pointForCoordinate:]` to return the wrong point. ([#11035](https://github.com/mapbox/mapbox-gl-native/pull/11035)) - -## 3.7.3 - January 10, 2018 - -* Fixed a crash while zooming while annotations are present on the map. ([#10791](https://github.com/mapbox/mapbox-gl-native/pull/10791)) -* CJK characters can be displayed in a locally installed font or a custom font bundled with the application, reducing map download times. Specify the font name using the `MLNIdeographicFontFamilyName` key in the application’s Info.plist file. ([#10522](https://github.com/mapbox/mapbox-gl-native/pull/10522)) -* Fixed a hang that could occur if the application makes many changes to user defaults immediately after launching. ([#10803](https://github.com/mapbox/mapbox-gl-native/pull/10803)) - -## 3.7.2 - December 21, 2017 - -### Packaging - -* Reduced the file size of the dSYM by removing the i386 architecture. Support for the i386 architecture (used by 32-bit simulators) will also be removed from the framework itself in a future release. ([#10781](https://github.com/mapbox/mapbox-gl-native/pull/10781)) - -### Other changes - -* Fixed an issue where removing a `MLNOpenGLStyleLayer` from a map might result in a crash. ([#10765](https://github.com/mapbox/mapbox-gl-native/pull/10765)) -* Added documentation for usage of coordinate bounds that cross the anti-meridian. ([#9804](https://github.com/mapbox/mapbox-gl-native/issues/9804)) -* Removed duplicated variables in `MLNMapSnapshotter`. ([#10702](https://github.com/mapbox/mapbox-gl-native/pull/10702)) - -## 3.7.1 - December 6, 2017 - -### Packaging - -* Renamed this SDK from Mapbox iOS SDK to Mapbox Maps SDK for iOS. ([#10610](https://github.com/mapbox/mapbox-gl-native/pull/10610)) - -### Annotations - -* Fixed incorrect hit targets for `MLNAnnotationImage`-backed annotations that caused `-[MLNMapViewDelegate mapView:didSelectAnnotation:]` to be called unnecessarily. ([#10538](https://github.com/mapbox/mapbox-gl-native/pull/10538)) - -### Other changes - -* Fixed an issue that caused `MLNMapView.minimumZoomLevel` to not be set. ([#10596](https://github.com/mapbox/mapbox-gl-native/pull/10596)) - -## 3.7.0 - Novemeber 13, 2017 - -### Networking and storage - -* Added a new `MLNMapSnapshotter` class for capturing rendered map images from an `MLNMapView`’s camera. ([#9891](https://github.com/mapbox/mapbox-gl-native/pull/9891)) -* Reduced the time it takes to create new `MLNMapView` instances in some cases. ([#9864](https://github.com/mapbox/mapbox-gl-native/pull/9864)) -* Added support for forced cache revalidation that will eliminate flickering that was sometimes visible for certain types of tiles (e.g., traffic tiles). ([#9670](https://github.com/mapbox/mapbox-gl-native/pull/9670), [#9103](https://github.com/mapbox/mapbox-gl-native/issues/9103)) -* Improved the performance of the SDK when parsing vector tile data used to render the map. ([#9312](https://github.com/mapbox/mapbox-gl-native/pull/9312)) - -### Styles - -* Added a new type of source, represented by the `MLNImageSource` class at runtime, that displays a georeferenced image. ([#9110](https://github.com/mapbox/mapbox-gl-native/pull/9110)) -* Setting a style using `MLNMapView`'s `styleURL` property now smoothly transitions from the previous style to the new style and maintains equivalent layers and sources along with their identifiers. ([#9256](https://github.com/mapbox/mapbox-gl-native/pull/9256)) -* Added `MLNCircleStyleLayer.circlePitchAlignment` and `MLNSymbolStyleLayer.iconPitchAlignment` properties to control whether circles and symbols lie flat against a tilted map. ([#9426](https://github.com/mapbox/mapbox-gl-native/pull/9426), [#9479](https://github.com/mapbox/mapbox-gl-native/pull/9479)) -* Added an `MLNSymbolStyleLayer.iconAnchor` property to control where an icon is anchored. ([#9849](https://github.com/mapbox/mapbox-gl-native/pull/9849)) -* The `maximumTextWidth` and `textLetterSpacing` properties of `MLNSymbolStyleLayer` are now compatible with `MLNSourceStyleFunction`s and `MLNCompositeStyleFunction`s, allowing data-driven styling of these properties. ([#9870](https://github.com/mapbox/mapbox-gl-native/pull/9870)) -* The `MLNSymbolStyleLayer.textAnchor`, `MLNSymbolStyleLayer.textJustification` and `MLNLineStyleLayer.lineJoin` properties are now compatible with `MLNSourceStyleFunction`s and `MLNCompositeStyleFunction`s, allowing data-driven styling of these properties. ([#9583](https://github.com/mapbox/mapbox-gl-native/pull/9583)) -* Improved the legibility of labels that follow lines when the map is tilted. ([#9009](https://github.com/mapbox/mapbox-gl-native/pull/9009)) -* Fixed an issue that could cause flickering when a translucent raster style layer was present. ([#9468](https://github.com/mapbox/mapbox-gl-native/pull/9468)) -* Fixed an issue that could cause antialiasing between polygons on the same layer to fail if the fill layers used data-driven styling for the fill color. ([#9699](https://github.com/mapbox/mapbox-gl-native/pull/9699)) -* The previously deprecated support for style classes has been removed. For interface compatibility, the API methods remain, but they are now non-functional. - -### Annotations - -* Fixed several bugs and performance issues related to the use of annotations backed by `MLNAnnotationImage`. The limits on the number and size of images and glyphs has been effectively eliminated and should now depend on hardware constraints. These fixes also apply to images used to represent icons in `MLNSymbolStyleLayer`. ([#9213](https://github.com/mapbox/mapbox-gl-native/pull/9213)) -* Added an `overlays` property to `MLNMapView`. ([#8617](https://github.com/mapbox/mapbox-gl-native/pull/8617)) -* Selecting an annotation no longer sets the user tracking mode to `MLNUserTrackingModeNone`. ([#10094](https://github.com/mapbox/mapbox-gl-native/pull/10094)) -* Added `-[MLNMapView cameraThatFitsShape:direction:edgePadding:]` to get a camera with zoom level and center coordinate computed to fit a shape. ([#10107](https://github.com/mapbox/mapbox-gl-native/pull/10107)) -* Added support selection of shape and polyline annotations.([#9984](https://github.com/mapbox/mapbox-gl-native/pull/9984)) -* Fixed an issue where view annotations could be slightly misaligned. View annotation placement is now rounded to the nearest pixel. ([#10219](https://github.com/mapbox/mapbox-gl-native/pull/10219)) -* Fixed an issue where a shape annotation callout was not displayed if the centroid was not visible. ([#10255](https://github.com/mapbox/mapbox-gl-native/pull/10255)) - -### User interaction - -* Users of VoiceOver can now swipe left and right to navigate among visible places, points of interest, and roads. ([#9950](https://github.com/mapbox/mapbox-gl-native/pull/9950)) -* Increased the default maximum zoom level from 20 to 22. ([#9835](https://github.com/mapbox/mapbox-gl-native/pull/9835)) -* Fixed an issue where the same value was passed in as the `oldCamera` and `newCamera` parameters to the `-[MLNMapViewDelegate mapView:shouldChangeFromCamera:toCamera:]` method. ([#10433](https://github.com/mapbox/mapbox-gl-native/pull/10433)) - -### Other changes - -* Added a Bulgarian localization. ([#10309](https://github.com/mapbox/mapbox-gl-native/pull/10309)) -* Fixed an issue that could cause line label rendering glitches when the line geometry is projected to a point behind the plane of the camera. ([#9865](https://github.com/mapbox/mapbox-gl-native/pull/9865)) -* Fixed an issue that could cause a crash when using `-[MLNMapView flyToCamera:completionHandler:]` and related methods with zoom levels at or near the maximum value. ([#9381](https://github.com/mapbox/mapbox-gl-native/pull/9381)) -* Added `-[MLNMapView showAttribution:]` to allow custom attribution buttons to show the default attribution interface. ([#10085](https://github.com/mapbox/mapbox-gl-native/pull/10085)) -* Fixed a conflict between multiple copies of SMCalloutView in a project. ([#10183](https://github.com/mapbox/mapbox-gl-native/pull/10183)) -* Fixed a crash when enabling the scale bar in iOS 8. ([#10241](https://github.com/mapbox/mapbox-gl-native/pull/10241)) - -## 3.6.4 - September 25, 2017 - -* Fixed an issue where stale (but still valid) map data could be ignored in offline mode. ([#10012](https://github.com/mapbox/mapbox-gl-native/pull/10012)) - -## 3.6.3 - September 15, 2017 - -* Added the option to display an always-on heading indicator with the default user location annotation, controlled via the `MLNMapView.showsUserHeadingIndicator` property. ([#9886](https://github.com/mapbox/mapbox-gl-native/pull/9886)) -* Fixed an issue where user heading tracking mode would update too frequently. ([#9845](https://github.com/mapbox/mapbox-gl-native/pull/9845)) -* Added support for iOS 11 location usage descriptions. ([#9869](https://github.com/mapbox/mapbox-gl-native/pull/9869)) -* Fixed an issue where `MLNUserLocation.location` did not follow its documented initialization behavior. This property will now properly return `nil` until the user’s location has been determined. ([#9639](https://github.com/mapbox/mapbox-gl-native/pull/9639)) -* `MLNMapView`’s `minimumZoomLevel` and `maximumZoomLevel` properties are now available in Interface Builder’s Attributes inspector. ([#9729](https://github.com/mapbox/mapbox-gl-native/pull/9729)) -* Deprecated `+[MLNStyle trafficDayStyleURL]` and `+[MLNStyle trafficNightStyleURL]` with no replacement method. To use the Traffic Day and Traffic Night styles going forward, we recommend that you use the underlying URL. ([#9918](https://github.com/mapbox/mapbox-gl-native/pull/9918)) -* Fixed a crash that sometimes occurred when a map view's view controller was deallocated. ([#9995](https://github.com/mapbox/mapbox-gl-native/pull/9995)) - -## 3.6.2 - August 18, 2017 - -* Added an `MLNStyle.localizesLabels` property, off by default, that localizes any Mapbox Streets–sourced symbol layer into the user’s preferred language. ([#9582](https://github.com/mapbox/mapbox-gl-native/pull/9582)) -* Added an additional camera method to MLNMapView that accepts an edge padding parameter. ([#9651](https://github.com/mapbox/mapbox-gl-native/pull/9651)) -* Fixed an issue with the scaling of the user location annotation’s horizontal accuracy indicator. ([#9721](https://github.com/mapbox/mapbox-gl-native/pull/9721)) -* Fixed an issue that caused `-[MLNShapeSource featuresMatchingPredicate:]` and `-[MLNVectorSource featuresInSourceLayersWithIdentifiers:predicate:]` to always return an empty array. ([#9784](https://github.com/mapbox/mapbox-gl-native/pull/9784)) - -## 3.6.1 - July 28, 2017 - -* Reduced the size of the dynamic framework by optimizing symbol visibility. ([#7604](https://github.com/mapbox/mapbox-gl-native/pull/7604)) -* Fixed an issue where the attribution button would have its custom tint color reset when the map view received a tint color change notification, such as when an alert controller was presented. ([#9598](https://github.com/mapbox/mapbox-gl-native/pull/9598)) -* Improved the behavior of zoom gestures when the map reaches the minimum zoom limit. ([#9626](https://github.com/mapbox/mapbox-gl-native/pull/9626)) -* Fixed an issue where tilt gesture was triggered with two fingers aligned vertically and panning down. ([#9571](https://github.com/mapbox/mapbox-gl-native/pull/9571)) -* Bitcode symbol maps (.bcsymbolmap files) are now included with the dynamic framework. ([#9613](https://github.com/mapbox/mapbox-gl-native/pull/9613)) - -## 3.6.0 - June 29, 2017 - -### Packaging - -* Xcode 8.0 or higher is now recommended for using this SDK. ([#8775](https://github.com/mapbox/mapbox-gl-native/pull/8775)) -* Fixed an issue in the static framework where localizations would never load. ([#9074](https://github.com/mapbox/mapbox-gl-native/pull/9074)) -* Updated MLNMapView’s logo view to display [the new Mapbox logo](https://www.mapbox.com/blog/new-mapbox-logo/). ([#8771](https://github.com/mapbox/mapbox-gl-native/pull/8771), [#8773](https://github.com/mapbox/mapbox-gl-native/pull/8773)) -* Added a Hungarian localization. ([#9347](https://github.com/mapbox/mapbox-gl-native/pull/9347)) - -### Styles - -* Added support for 3D extrusion of buildings and other polygonal features via the `MLNFillExtrusionStyleLayer` class and the `fill-extrusion` layer type in style JSON. ([#8431](https://github.com/mapbox/mapbox-gl-native/pull/8431)) -* MLNMapView and MLNTilePyramidOfflineRegion now default to version 10 of the Mapbox Streets style. Similarly, several style URL class methods of MLNStyle return URLs to version 10 styles. Unversioned variations of these methods are no longer deprecated. `MLNStyleDefaultVersion` should no longer be used with any style other than Streets. ([#6301](https://github.com/mapbox/mapbox-gl-native/pull/6301)) -* Added class methods to MLNStyle that correspond to the new [Traffic Day and Traffic Night](https://www.mapbox.com/blog/live-traffic-maps/) styles. ([#6301](https://github.com/mapbox/mapbox-gl-native/pull/6301)) -* MLNSymbolStyleLayer’s `iconImageName`, `iconScale`, `textFontSize`, `textOffset`, and `textRotation` properties can now be set to a source or composite function. ([#8544](https://github.com/mapbox/mapbox-gl-native/pull/8544), [#8590](https://github.com/mapbox/mapbox-gl-native/pull/8590), [#8592](https://github.com/mapbox/mapbox-gl-native/pull/8592), [#8593](https://github.com/mapbox/mapbox-gl-native/pull/8593)) -* Fixed an issue where setting the `MLNVectorStyleLayer.predicate` property failed to take effect if the relevant source was not in use by a visible layer at the time. ([#8653](https://github.com/mapbox/mapbox-gl-native/pull/8653)) -* Fixed an issue preventing programmatically added style layers from appearing in already cached tiles. ([#8954](https://github.com/mapbox/mapbox-gl-native/pull/8954)) -* Fixed an issue causing a composite function’s highest zoom level stop to be misinterpreted. ([#8613](https://github.com/mapbox/mapbox-gl-native/pull/8613), [#8790](https://github.com/mapbox/mapbox-gl-native/pull/8790)) -* Fixed an issue where re-adding a layer that had been previously removed from a style would reset its paint properties. Moved initializers for `MLNTileSource`, `MLNStyleLayer`, and `MLNForegroundStyleLayer` to their concrete subclasses; because these classes were already intended for initialization only via concrete subclasses, this should have no developer impact. ([#8626](https://github.com/mapbox/mapbox-gl-native/pull/8626)) -* Fixed a crash that occurred when removing a source that was still being used by one or more style layers. Since this is a programming error, a warning is logged to the console instead. ([#9129](https://github.com/mapbox/mapbox-gl-native/pull/9129)) -* Feature querying results now account for any changes to a feature’s size caused by a source or composite style function. ([#8665](https://github.com/mapbox/mapbox-gl-native/pull/8665)) -* Fixed the behavior of composite functions that specify fractional zoom level stops. ([#9289](https://github.com/mapbox/mapbox-gl-native/pull/9289)) -* Letter spacing is now disabled in Arabic text so that ligatures are drawn correctly. ([#9062](https://github.com/mapbox/mapbox-gl-native/pull/9062)) -* Improved the performance of styles using source and composite style functions. ([#9185](https://github.com/mapbox/mapbox-gl-native/pull/9185), [#9257](https://github.com/mapbox/mapbox-gl-native/pull/9257)) - -### Annotations - -* Added a new initializer to `MLNAnnotationView` so that it is possible to create a new instance with an associated annotation object. ([#9029](https://github.com/mapbox/mapbox-gl-native/pull/9029)) -* Added a new `rotatesToMatchCamera` property to `MLNAnnotationView` that, when set to true, causes the annotation view to rotate along with the map's rotation angle giving the appearance that the annoation view is pinned to the map. ([#9147](https://github.com/mapbox/mapbox-gl-native/pull/9147)) -* Fixed an issue causing a view-backed annotation to disappear immediately instead of animating when the annotation’s `coordinate` property is set to a value outside the current viewport. ([#8565](https://github.com/mapbox/mapbox-gl-native/pull/8565)) -* Fixed an issue in which `MLNMapView` overrode the tint colors of its annotation views. ([#8789](https://github.com/mapbox/mapbox-gl-native/pull/8789)) -* Fixed an issue causing annotation views to persist in the map’s annotation container view even after their associated annotations were removed. ([#9025](https://github.com/mapbox/mapbox-gl-native/pull/9025)) -* The `MLNPolyline.coordinate` and `MLNPolygon.coordinate` properties now return the midpoint and centroid, respectively, instead of the first coordinate. ([#8713](https://github.com/mapbox/mapbox-gl-native/pull/8713)) - -### User interaction - -* Added a scale bar to `MLNMapView` that indicates the scale of the map. ([#7631](https://github.com/mapbox/mapbox-gl-native/pull/7631)) -* Fixed an issue causing the map to go blank during a flight animation that travels a very short distance. ([#9199](https://github.com/mapbox/mapbox-gl-native/pull/9199)) -* Fixed an issue where gesture recognizers associated with map view interactivity were not disabled when their related interactions were disabled. ([#8304](https://github.com/mapbox/mapbox-gl-native/pull/8304)) -* Fixed an issue preventing the Mapbox Telemetry confirmation dialog from appearing when opened from within a map view in a modal view controller. ([#9027](https://github.com/mapbox/mapbox-gl-native/pull/9027)) -* Corrected the size of MLNMapView’s compass. ([#9060](https://github.com/mapbox/mapbox-gl-native/pull/9060)) -* The Improve This Map button in the attribution action sheet now leads to a feedback tool that matches MLNMapView’s rotation and pitch. `-[MLNAttributionInfo feedbackURLAtCenterCoordinate:zoomLevel:]` no longer respects the feedback URL specified in TileJSON. ([#9078](https://github.com/mapbox/mapbox-gl-native/pull/9078)) -* `-[MLNMapViewDelegate mapView:shouldChangeFromCamera:toCamera:]` can now block any panning caused by a pinch gesture. ([#9344](https://github.com/mapbox/mapbox-gl-native/pull/9344)) -* If the user taps on the map while it is flying to the user’s location, the user dot no longer appears in the incorrect location. ([#7916](https://github.com/mapbox/mapbox-gl-native/pull/7916)) -* Improved the responsiveness of the tilt gesture by reducing the initial recognition delay. ([#9386](https://github.com/mapbox/mapbox-gl-native/pull/9386)) - -### Other changes - -* Fixed a crash that occurred when accessing the `MLNMultiPolygon.coordinate` property. ([#8713](https://github.com/mapbox/mapbox-gl-native/pull/8713)) -* Fixed a crash or console spew when MLNMapView is initialized with a frame smaller than 64 points wide by 64 points tall. ([#8562](https://github.com/mapbox/mapbox-gl-native/pull/8562)) -* Fixed an issue that caused the compass and scale bar to underlap navigation and tab bars. ([#7716](https://github.com/mapbox/mapbox-gl-native/pull/7716)) -* The error passed into `-[MLNMapViewDelegate mapViewDidFailLoadingMap:withError:]` now includes a more specific description and failure reason. ([#8418](https://github.com/mapbox/mapbox-gl-native/pull/8418)) -* Improved CPU and battery performance while animating a tilted map’s camera in an area with many labels. ([#9031](https://github.com/mapbox/mapbox-gl-native/pull/9031)) -* Fixed an issue rendering polylines that contain duplicate vertices. ([#8808](https://github.com/mapbox/mapbox-gl-native/pull/8808)) -* Added struct boxing to `MLNCoordinateSpan`, `MLNCoordinateBounds`, `MLNOfflinePackProgress`, and `MLNTransition`. ([#9343](https://github.com/mapbox/mapbox-gl-native/pull/9343)) - -## 3.5.4 - May 9, 2017 - -* Fixed an issue that caused view backed annotations to become detached from the map view during pan gestures combined with animations of annotation view size or when the annotation view had no size but contained subviews with a non-zero size. ([#8926](https://github.com/mapbox/mapbox-gl-native/pull/8926)) - -## 3.5.3 - May 2, 2017 - -* Fixed an issue that prevented the attribution `UIAlertController` from showing in modal hierarchies. ([#8837](https://github.com/mapbox/mapbox-gl-native/pull/8837)) - -## 3.5.2 - April 7, 2017 - -* Fixed an issue that caused a crash when the user location annotation was presenting a callout view and the map was moved. ([#8686](https://github.com/mapbox/mapbox-gl-native/pull/8686)) -* This release was built with Xcode 8.3.1, which fixed [a significant bitcode issue](http://www.openradar.me/31302382) introduced in Xcode 8.3 that caused Mapbox iOS SDK 3.5.1 to be 2× larger than 3.5.0. - -## 3.5.1 - April 5, 2017 - -* Fixed an issue that caused the return type of a map view delegate method to bridge incorrectly to applications written in Swift. ([#8541](https://github.com/mapbox/mapbox-gl-native/pull/8541)) -* Fixed a crash that could occur when calling `-[MLNShapeSource featuresMatchingPredicate:]` or `-[MLNVectorSource featuresInSourceLayersWithIdentifiers:predicate:]`. ([#8553](https://github.com/mapbox/mapbox-gl-native/pull/8553)) -* Fixed a crash that could occur after adding view-backed annotations to the map. ([#8513](https://github.com/mapbox/mapbox-gl-native/pull/8513)) -* Renamed the “Data-Driven Styling” guide to “Using Style Functions at Runtime” and clarified the meaning of data-driven styling in the guide’s discussion of runtime style functions. ([#8627](https://github.com/mapbox/mapbox-gl-native/pull/8627)) - -## 3.5.0 - March 21, 2017 - -### Packaging - -* The minimum deployment target for this SDK is now iOS 8. ([#8129](https://github.com/mapbox/mapbox-gl-native/pull/8129)) -* Added support for the Carthage dependency manager. See [our website](https://www.mapbox.com/ios-sdk/) for setup instructions. ([#8257](https://github.com/mapbox/mapbox-gl-native/pull/8257)) -* While running your application in the iOS Simulator, you will receive a notice in the console if a newer version of this SDK is available. ([#8282](https://github.com/mapbox/mapbox-gl-native/pull/8282)) - -### Internationalization - -* Added support for right-to-left text and Arabic ligatures in labels. ([#6984](https://github.com/mapbox/mapbox-gl-native/pull/6984), [#7123](https://github.com/mapbox/mapbox-gl-native/pull/7123)) -* Improved the line wrapping behavior of point-placed labels, especially labels written in Chinese and Japanese. ([#6828](https://github.com/mapbox/mapbox-gl-native/pull/6828), [#7446](https://github.com/mapbox/mapbox-gl-native/pull/7446)) -* CJK characters now remain upright in vertically oriented labels that have line placement, such as road labels. ([#7114](https://github.com/mapbox/mapbox-gl-native/issues/7114)) -* Added Catalan, Chinese (Simplified and Traditional), Dutch, Finnish, French, German, Japanese, Lithuanian, Polish, Portuguese (Brazilian), Russian, Spanish, Swedish, Ukrainian, and Vietnamese localizations. ([#7316](https://github.com/mapbox/mapbox-gl-native/pull/7316), [#7899](https://github.com/mapbox/mapbox-gl-native/pull/7899), [#7999](https://github.com/mapbox/mapbox-gl-native/pull/7999), [#8113](https://github.com/mapbox/mapbox-gl-native/pull/8113), [#8256](https://github.com/mapbox/mapbox-gl-native/pull/8256)) - -### Styles - -* Added support for data-driven styling in the form of source and composite style functions. `MLNStyleFunction` is now an abstract class, with `MLNCameraStyleFunction` providing the behavior of `MLNStyleFunction` in previous releases. New `MLNStyleFunction` subclasses allow you to vary a style attribute by the values of attributes of features in the source. ([#7596](https://github.com/mapbox/mapbox-gl-native/pull/7596)) -* Added `circleStrokeColor`, `circleStrokeWidth`, and `circleStrokeOpacity` properties to MLNCircleStyleLayer and support for corresponding properties in style JSON files. ([#7356](https://github.com/mapbox/mapbox-gl-native/pull/7356)) -* Point-placed labels in symbol style layers are now placed at more optimal locations within polygons. ([#7465](https://github.com/mapbox/mapbox-gl-native/pull/7465)) -* Fixed flickering that occurred when manipulating a style layer. ([#7616](https://github.com/mapbox/mapbox-gl-native/pull/7616)) -* Symbol style layers can now render point collections (known as multipoints in GeoJSON). ([#7445](https://github.com/mapbox/mapbox-gl-native/pull/7445)) -* Added a `transition` property to MLNStyle to customize the timing of changes to style layers. ([#7711](https://github.com/mapbox/mapbox-gl-native/pull/7711)) -* Added properties to MLNStyleLayer subclasses to customize the timing of transitions between values of individual attributes. ([#8225](https://github.com/mapbox/mapbox-gl-native/pull/8225)) -* Fixed an issue causing lines and text labels toward the top of the map view to appear blurry when the map is tilted. ([#7444](https://github.com/mapbox/mapbox-gl-native/pull/7444)) -* Fixed incorrect interpolation of style functions in Boolean-typed style attributes. ([#7526](https://github.com/mapbox/mapbox-gl-native/pull/7526)) -* Removed support for the `ref` property in layers in style JSON files. ([#7586](https://github.com/mapbox/mapbox-gl-native/pull/7586)) -* Fixed an issue that collapsed consecutive newlines within text labels. ([#7446](https://github.com/mapbox/mapbox-gl-native/pull/7446)) -* Fixed artifacts when drawing particularly acute line joins. ([#7786](https://github.com/mapbox/mapbox-gl-native/pull/7786)) -* Fixed an issue in which a vector style layer predicate involving the `$id` key path would exclude all features from the layer. ([#7989](https://github.com/mapbox/mapbox-gl-native/pull/7989), [#7971](https://github.com/mapbox/mapbox-gl-native/pull/7971)) -* Fixed an issue causing vector style layer predicates to be evaluated as if each feature had a `$type` attribute of 1, 2, or 3. The `$type` key path can now be compared to `Point`, `LineString`, or `Polygon`, as described in the documentation. ([#7971](https://github.com/mapbox/mapbox-gl-native/pull/7971)) -* When setting an `MLNShapeSource`’s shape to an `MLNFeature` instance, any `UIColor` attribute value is now converted to the equivalent CSS string representation for use with `MLNInterpolationModeIdentity` in style functions. ([#8025](https://github.com/mapbox/mapbox-gl-native/pull/8025)) -* An exception is no longer thrown if layers or sources are removed from a style before they are added. ([#7962](https://github.com/mapbox/mapbox-gl-native/pull/7962)) -* Renamed MLNStyleConstantValue to MLNConstantStyleValue. For compatibility with previous releases, MLNStyleConstantValue is now an alias of MLNConstantStyleValue. ([#8090](https://github.com/mapbox/mapbox-gl-native/pull/8090)) -* Fixed a crash that could occur when switching styles after adding an MLNSource to the style. ([#8298](https://github.com/mapbox/mapbox-gl-native/pull/8298)) - -### Annotations and user interaction - -* Added a method to MLNMapViewDelegate, `-mapView:shouldChangeFromCamera:toCamera:`, that you can implement to restrict which parts the user can navigate to using gestures. ([#5584](https://github.com/mapbox/mapbox-gl-native/pull/5584)) -* Annotations are no longer deselected when the map is panned or zoomed, even if the annotation moves out of the visible bounds. ([#8022](https://github.com/mapbox/mapbox-gl-native/pull/8022)) -* Changing the coordinates of a point annotation no longer deselects the annotation. ([#8269](https://github.com/mapbox/mapbox-gl-native/pull/8269)) -* Fixed an issue that could cause a crash when point annotations were added and removed while simultaneously querying source features. ([#8374](https://github.com/mapbox/mapbox-gl-native/pull/8374)) -* Fixed an issue preventing MLNMapView from adding a polyline annotation with the same coordinates as a polygon annotation. ([#8355](https://github.com/mapbox/mapbox-gl-native/pull/8355)) -* Fixed an issue where translucent, non-view-backed point annotations along tile boundaries would be drawn darker than expected. ([#6832](https://github.com/mapbox/mapbox-gl-native/pull/6832)) -* Double-tap and two-finger tap gestures now zoom to the nearest integer zoom level. ([#8027](https://github.com/mapbox/mapbox-gl-native/pull/8027)) -* The `MLNAnnotationView.annotation` property is now read-write. ([#8139](https://github.com/mapbox/mapbox-gl-native/pull/8139)) -* Enabled the one-finger zoom gesture on iPad. To execute this gesture, tap twice; on second tap, hold your finger on the map and pan up to zoom in, or down to zoom out. ([#8379](https://github.com/mapbox/mapbox-gl-native/pull/8379)) - -### Networking and offline maps - -* Offline pack notifications are now posted by `MLNOfflinePack` instances instead of the shared `MLNOfflineStorage` object. For backwards compatibility, the `userInfo` dictionary still indicates the pack’s state and progress. ([#7952](https://github.com/mapbox/mapbox-gl-native/pull/7952)) -* Fixed a memory leak in MLNMapView. ([#7956](https://github.com/mapbox/mapbox-gl-native/pull/7956)) -* Fixed an issue that could prevent a cached style from appearing while the device is offline. ([#7770](https://github.com/mapbox/mapbox-gl-native/pull/7770)) -* Fixed an issue that could prevent a style from loading when reestablishing a network connection. ([#7902](https://github.com/mapbox/mapbox-gl-native/pull/7902)) -* `MLNOfflineStorage` instances now support a delegate conforming to `MLNOfflineStorageDelegate`, which allows altering URLs before they are requested from the Internet. ([#8084](https://github.com/mapbox/mapbox-gl-native/pull/8084)) - -### Other changes - -* Fixed an issue that, among other things, caused various islands to disappear at certain zoom levels. ([#7621](https://github.com/mapbox/mapbox-gl-native/pull/7621)) -* Added a method to MLNMapView that allows you to specify a predicate when querying for visible features. ([#8256](https://github.com/mapbox/mapbox-gl-native/pull/8246)) -* Fixed flickering that occurred when panning past the antimeridian. ([#7574](https://github.com/mapbox/mapbox-gl-native/pull/7574)) -* Fixed an issue that sometimes caused crashes when the SDK interacted with the file system in the background. ([#8125](https://github.com/mapbox/mapbox-gl-native/pull/8125)) -* Added a `MLNDistanceFormatter` class for formatting geographic distances. ([#7888](https://github.com/mapbox/mapbox-gl-native/pull/7888)) -* Fixed an issue that was causing the system location indicator to stay on in background after telemetry was disabled. ([#7833](https://github.com/mapbox/mapbox-gl-native/pull/7833)) -* Added support for predicates in rendered feature querying [8256](https://github.com/mapbox/mapbox-gl-native/pull/8246) -* Added a nightly build of the dynamic framework. ([#8337](https://github.com/mapbox/mapbox-gl-native/pull/8337)) - -## 3.4.2 - February 21, 2017 - -This is the final scheduled version of the Mapbox iOS SDK that supports iOS 7. ([#8129](https://github.com/mapbox/mapbox-gl-native/pull/8129)) - -* A programmatic change to an MLNMapView’s camera no longer resets the user tracking mode. ([#7856](https://github.com/mapbox/mapbox-gl-native/pull/7856)) -* Improved the performance of trivial camera animations. ([#7125](https://github.com/mapbox/mapbox-gl-native/pull/7125)) -* Added a guide detailing the built-in gesture recognizers and various ways to configure them. ([#7937](https://github.com/mapbox/mapbox-gl-native/pull/7937)) - -## 3.4.1 - January 25, 2017 - -* Fixed a build error in the static framework flavor of this SDK caused by a missing header. ([#7844](https://github.com/mapbox/mapbox-gl-native/pull/7844)) -* Fixed an issue causing MLNMapView’s `camera`’s `heading` to be set to a negative value, indicating an undefined heading, when the map view faces northwest. The heading is now wrapped to between zero and 360 degrees, for consistency with MLNMapView’s `direction` property. ([#7724](https://github.com/mapbox/mapbox-gl-native/pull/7724)) -* Fixed an issue where MLNMapView could initially flash black before loading. ([#7859](https://github.com/mapbox/mapbox-gl-native/pull/7859)) -* Deprecated the style class methods in MLNStyle. ([#7785](https://github.com/mapbox/mapbox-gl-native/pull/7785)) - -## 3.4.0 - January 20, 2017 - -### Packaging - -* Xcode 7.3 or above is required for using this SDK. ([#6059](https://github.com/mapbox/mapbox-gl-native/issues/6059)) -* Clarified that the `-ObjC` linker flag is required for linking against the static framework distribution of this SDK. ([#6213](https://github.com/mapbox/mapbox-gl-native/pull/6213)) -* The API reference has a sharper look. ([#7422](https://github.com/mapbox/mapbox-gl-native/pull/7422)) -* Added documentation for the Info.plist keys used by this SDK. ([#6833](https://github.com/mapbox/mapbox-gl-native/pull/6833)) - -### Styles and data - -* A new runtime styling API allows you to adjust the style and content of the base map dynamically. All the options available in [Mapbox Studio](https://www.mapbox.com/studio/) are now exposed via MLNStyle and subclasses of MLNStyleLayer and MLNSource. ([#5727](https://github.com/mapbox/mapbox-gl-native/pull/5727)) -* MLNMapView’s `styleURL` property can now be set to an absolute file URL. ([#6026](https://github.com/mapbox/mapbox-gl-native/pull/6026)) -* When creating an MLNShapeSource, you can now specify options for clustering point features within the shape source. Similarly, GeoJSON sources specified by the stylesheet at design time can specify the `cluster`, `clusterMaxZoom`, and `clusterRadius` attributes. ([#5724](https://github.com/mapbox/mapbox-gl-native/pull/5724)) -* Added [quadkey](https://msdn.microsoft.com/en-us/library/bb259689.aspx) support and limited WMS support in raster tile URL templates. ([#5628](https://github.com/mapbox/mapbox-gl-native/pull/5628)) -* When creating an MLNTileSource, you can now specify that the tile URLs use [TMS](https://en.wikipedia.org/wiki/Tile_Map_Service) coordinates by setting `MLNTileSourceOptionTileCoordinateSystem` to `MLNTileCoordinateSystemTMS`. TileJSON files can specify `"scheme": "tms"`. ([#2270](https://github.com/mapbox/mapbox-gl-native/pull/2270)) -* Fixed an issue causing abstract MLNMultiPointFeature objects to be returned in feature query results. Now concrete MLNPointCollectionFeature objects are returned. MLNMultiPointFeature is now an alias of MLNPointCollectionFeature. ([#6742](https://github.com/mapbox/mapbox-gl-native/pull/6742)) -* Fixed rendering artifacts and missing glyphs that occurred after viewing a large number of CJK characters on the map. ([#5908](https://github.com/mapbox/mapbox-gl-native/pull/5908)) -* `-[MLNMapView resetPosition]` now resets to the current style’s default center coordinates, zoom level, direction, and pitch, if specified. ([#6127](https://github.com/mapbox/mapbox-gl-native/pull/6127)) -* Fixed an issue where feature querying sometimes failed to return the expected features when the map was tilted. ([#6773](https://github.com/mapbox/mapbox-gl-native/pull/6773)) -* MLNFeature’s `attributes` and `identifier` properties are now writable. ([#6728](https://github.com/mapbox/mapbox-gl-native/pull/6728)) -* The action sheet that appears when tapping the information button in the bottom-right corner now lists the correct attribution for the current style. ([#5999](https://github.com/mapbox/mapbox-gl-native/pull/5999)) -* Added support for MLNSymbolStyleLayer’s `textPitchAlignment` property and the corresponding style JSON property for improved street label legibility on a tilted map. ([#5288](https://github.com/mapbox/mapbox-gl-native/pull/5288)) -* Added support for MLNSymbolStyleLayer’s `iconTextFit` and `iconTextFitPadding` properties and the corresponding style JSON properties, allowing the background of a shield to automatically resize to fit the shield’s text. ([#5334](https://github.com/mapbox/mapbox-gl-native/pull/5334)) -* Added support for MLNSymbolStyleLayer’s `circlePitchScale` property and the corresponding style JSON property, allowing circle features in a tilted base map to scale or remain the same size as the viewing distance changes. ([#5576](https://github.com/mapbox/mapbox-gl-native/pull/5576)) -* The `identifier` property of an MLNFeature may now be either a number or string. ([#5514](https://github.com/mapbox/mapbox-gl-native/pull/5514)) -* If MLNMapView is unable to obtain or parse a style, it now calls its delegate’s `-mapViewDidFailLoadingMap:withError:` method. ([#6145](https://github.com/mapbox/mapbox-gl-native/pull/6145)) -* Added the `-[MLNMapViewDelegate mapView:didFinishLoadingStyle:]` delegate method, which offers the earliest opportunity to modify the layout or appearance of the current style before the map view is displayed to the user. ([#6636](https://github.com/mapbox/mapbox-gl-native/pull/6636)) -* Fixed crashes that could occur when loading a malformed stylesheet. ([#5736](https://github.com/mapbox/mapbox-gl-native/pull/5736)) -* Fixed an issue causing stepwise zoom functions to be misinterpreted. ([#6328](https://github.com/mapbox/mapbox-gl-native/pull/6328)) -* A source’s tiles are no longer rendered when the map is outside the source’s supported zoom levels. ([#6345](https://github.com/mapbox/mapbox-gl-native/pull/6345)) -* Improved style parsing performance. ([#6170](https://github.com/mapbox/mapbox-gl-native/pull/6170)) -* Improved feature querying performance. ([#6514](https://github.com/mapbox/mapbox-gl-native/pull/6514)) -* Fixed an issue where shapes that cannot currently be visually represented as annotations were still shown on the map as point annotations. ([#6764](https://github.com/mapbox/mapbox-gl-native/issues/6764)) - -### User location - -* The user dot now animates between user locations when user tracking is disabled. ([#6215](https://github.com/mapbox/mapbox-gl-native/pull/6215)) -* To customize the appearance of the user location annotation, subclass the newly added MLNUserLocationAnnotationView class and implement `-[MLNMapViewDelegate mapView:viewForAnnotation:]`. ([#5882](https://github.com/mapbox/mapbox-gl-native/pull/5882)) -* `-[MLNMapView viewForAnnotation:]` now returns the user location annotation view when given the user location annotation. ([#6957](https://github.com/mapbox/mapbox-gl-native/pull/6957)) -* Fixed an issue causing the user dot’s accuracy ring to wobble while zooming in and out. ([#6019](https://github.com/mapbox/mapbox-gl-native/pull/6019)) -* Heading accuracy indicator sizing has been changed to appear more precise. ([#6120](https://github.com/mapbox/mapbox-gl-native/pull/6120)) -* Fixed an issue that caused the map to not update to reflect the centerOffset when the user location was tracked. ([#6216](https://github.com/mapbox/mapbox-gl-native/pull/6216)) - -### Annotations - -* Added new methods to MLNMultiPoint for changing the vertices along a polyline annotation or the exterior of a polygon annotation. ([#6565](https://github.com/mapbox/mapbox-gl-native/pull/6565)) -* Added new APIs to MLNMapView to query for visible annotations. Combined with `-[MLNMapView viewForAnnotation:]`, these APIs can be used to access all visible annotation views. ([#6061](https://github.com/mapbox/mapbox-gl-native/pull/6061)) -* Shape, feature, and annotation classes now conform to NSSecureCoding. ([#6559](https://github.com/mapbox/mapbox-gl-native/pull/6559)) -* Fixed an issue causing offscreen annotation views to be updated even when they were in the reuse queue. ([#5987](https://github.com/mapbox/mapbox-gl-native/pull/5987)) -* Fixed an issue preventing MLNAnnotationView from animating when its coordinate changes. ([#6215](https://github.com/mapbox/mapbox-gl-native/pull/6215)) -* Fixed an issue causing the wrong annotation view to be selected when tapping an annotation view with a center offset applied. ([#5931](https://github.com/mapbox/mapbox-gl-native/pull/5931)) -* Fixed an issue that assigned annotation views to polyline and polygon annotations. ([#5770](https://github.com/mapbox/mapbox-gl-native/pull/5770)) -* Fixed an issue causing the callout view to be dismissed when panning around. ([#6676](https://github.com/mapbox/mapbox-gl-native/pull/6676)) -* Per documentation, the first and last coordinates in an MLNPolygon must be identical in order for the polygon to draw correctly. The same is true for an MLNPolygon’s interior polygon. ([#5514](https://github.com/mapbox/mapbox-gl-native/pull/5514)) -* To make an MLNPolyline or MLNPolygon span the antimeridian, specify coordinates with longitudes greater than 180° or less than −180°. ([#6088](https://github.com/mapbox/mapbox-gl-native/pull/6088)) -* Various method arguments that are represented as C arrays of `CLLocationCoordinate2D` instances have been marked `const` to streamline bridging to Swift. ([#7215](https://github.com/mapbox/mapbox-gl-native/pull/7215)) -* Fixed an issue that caused an annotation view to disappear if it isn’t created using the annotation view reuse queue. ([#6485](https://github.com/mapbox/mapbox-gl-native/pull/6485)) -* Fixed an issue that could reset user-added transformations on annotation views. ([#6166](https://github.com/mapbox/mapbox-gl-native/pull/6166)) -* Improved the performance of relocating a non-view-backed point annotation by changing its `coordinate` property. ([#5385](https://github.com/mapbox/mapbox-gl-native/pull/5385)) -* Fixed an issue that caused an assertion failure if a `MLNShapeCollection` (a GeoJSON GeometryCollection) was created with an empty array of shapes. ([#7632](https://github.com/mapbox/mapbox-gl-native/pull/7632)) -* Improved the precision of annotations at zoom levels greater than 18. ([#5517](https://github.com/mapbox/mapbox-gl-native/pull/5517)) - -### Networking and offline maps - -* Fixed an issue preventing an MLNMapView from loading tiles while an offline pack is downloading. ([#6446](https://github.com/mapbox/mapbox-gl-native/pull/6446)) -* Fixed a crash that could occur when the device is disconnected while downloading an offline pack. ([#6293](https://github.com/mapbox/mapbox-gl-native/pull/6293)) -* Fixed a crash that occurred when encountering a rate-limit error in response to a network request. ([#6223](https://github.com/mapbox/mapbox-gl-native/pull/6223)) -* Fixed an issue causing an MLNOfflinePack’s progress to continue to update after calling `-suspend`. ([#6186](https://github.com/mapbox/mapbox-gl-native/pull/6186)) -* Fixed an issue preventing cached annotation images from displaying while the device is offline. ([#6358](https://github.com/mapbox/mapbox-gl-native/pull/6358)) -* Added support for an `MLNMapboxAPIBaseURL` key in an app's `Info.plist` in order to customize the base URL used for retrieving map data, styles, and other resources. ([#6709](https://github.com/mapbox/mapbox-gl-native/pull/6709)) -* Query parameters are no longer stripped from mapbox: URLs used as resource URLs. ([#6182](https://github.com/mapbox/mapbox-gl-native/pull/6182), [#6432](https://github.com/mapbox/mapbox-gl-native/pull/6432)) -* Database errors are now logged to the console. ([#6291](https://github.com/mapbox/mapbox-gl-native/pull/6291)) - -### Other changes - -* Raster tiles such as those from Mapbox Satellite are now cached, eliminating flashing while panning back and forth. ([#7091](https://github.com/mapbox/mapbox-gl-native/pull/7091)) -* Improved the performance of symbol style layers. ([#7025](https://github.com/mapbox/mapbox-gl-native/pull/7025)) -* As the user zooms in, tiles from lower zoom levels are scaled up until tiles for higher zoom levels are loaded. ([#5143](https://github.com/mapbox/mapbox-gl-native/pull/5143)) -* Notification names and user info keys are now string enumeration values for ease of use in Swift. ([#6794](https://github.com/mapbox/mapbox-gl-native/pull/6794)) -* MLNMapDebugOverdrawVisualizationMask no longer has any effect in Release builds of the SDK. This debug mask has been disabled for performance reasons. ([#5555](https://github.com/mapbox/mapbox-gl-native/pull/5555)) -* Fixed a typo in the documentation for the MLNCompassDirectionFormatter class. ([#5879](https://github.com/mapbox/mapbox-gl-native/pull/5879)) -* The UITapGestureRecognizer on MLNMapView that is used for selecting annotations now fails if a tap does not select an annotation. ([#7246](https://github.com/mapbox/mapbox-gl-native/pull/7246)) -* Fixed issues related to the visibility of sources in viewports less than 512 pixels wide or tall. ([#7438](https://github.com/mapbox/mapbox-gl-native/pull/7438)) - -## 3.3.7 - November 17, 2016 - -* This version is the same as 3.3.6 but it is built with Xcode 8 that produces a smaller binary. Developers using this version in Swift applications built with Xcode 7.3.1 should use the unstripped, `*-symbols` framework. - -## 3.3.6 - November 9, 2016 - -* Fixed a crash that occurred during low-memory situations when multiple instances of MLNMapView were in the view hierarchy. The speculative fix in v3.3.5 has been reverted. ([#6972](https://github.com/mapbox/mapbox-gl-native/pull/6972)) - -## 3.3.5 - November 2, 2016 - -* Speculatively fixed an OpenGL rendering crash. ([#6844](https://github.com/mapbox/mapbox-gl-native/pull/6844)) -* Fixed an issue with symbols not being properly stripped from the dynamic framework. The dSYM file included with the standard dynamic framework in previous releases (e.g., `mapbox-ios-sdk-3.3.4-dynamic.zip` or the `Mapbox-iOS-SDK` pod) could not be used to symbolicate crashes. ([#6531](https://github.com/mapbox/mapbox-gl-native/pull/6531)) -* Simulator architecture slices are included in the included dSYM file, allowing you to symbolicate crashes that occur in the Simulator. ([#5740](https://github.com/mapbox/mapbox-gl-native/pull/5740)) -* Fixed a crash that sometimes occurred when initializing an MLNMapView. ([#5932](https://github.com/mapbox/mapbox-gl-native/pull/5932)) - -## 3.3.4 - August 8, 2016 - -* Fixed an issue that caused the user dot to be selected when tapping an annotation that lies within the user dot’s accuracy circle. First attempt was [#5816](https://github.com/mapbox/mapbox-gl-native/pull/5816) in v3.3.2, which excluded the pulsing halo but not the accuracy circle. ([#5894](https://github.com/mapbox/mapbox-gl-native/pull/5894)) - -## 3.3.3 - July 29, 2016 - -* Fixed an issue where the style zoom levels were not respected when deciding when to render a layer. ([#5811](https://github.com/mapbox/mapbox-gl-native/issues/5811)) - -## 3.3.2 - July 28, 2016 - -* Speculatively fixed a crash that occurred when initializing an MLNMapView on iOS 7.x. ([#5791](https://github.com/mapbox/mapbox-gl-native/pull/5791)) -* View-backed annotations no longer prevent the user from starting to pan the map. ([#5813](https://github.com/mapbox/mapbox-gl-native/pull/5813)) -* Fixed an issue that caused the user dot to be selected when tapping an annotation that lies within the user dot’s accuracy circle. ([#5816](https://github.com/mapbox/mapbox-gl-native/pull/5816)) - -## 3.3.1 - July 19, 2016 - -* Fixed a crash that occurred when a sprite URL lacks a file extension. See [this comment](https://github.com/mapbox/mapbox-gl-native/issues/5722#issuecomment-233701251) to determine who may be affected by this bug. ([#5723](https://github.com/mapbox/mapbox-gl-native/pull/5723)) -* Fixed an issue causing overlapping polylines and polygons to be drawn in undefined z-order. Shapes are always drawn in the order they are added to the map, from the oldest on the bottom to the newest on the top. ([#5710](https://github.com/mapbox/mapbox-gl-native/pull/5710)) -* Fixed an issue preventing MLNMapView from changing its viewport when a single annotation was passed into `-[MLNMapView showAnnotations:animated:]`. ([#5693](https://github.com/mapbox/mapbox-gl-native/pull/5693)) -* Fixed an issue causing polyline and polygon annotations to disappear when the zoom level is one less than the maximum zoom level. ([#5418](https://github.com/mapbox/mapbox-gl-native/pull/5418)) -* Fixed a crash that occurred when a style or other resource URL has a query string. ([#5554](https://github.com/mapbox/mapbox-gl-native/pull/5554)) -* If you subclass MLNAnnotationView, your implementation of `-setSelected:animated:` is now called with the correct value in the `animated` parameter, making it possible to animate a deselection. ([#5677](https://github.com/mapbox/mapbox-gl-native/pull/5677)) -* The compass, Mapbox logo, and attribution button now accommodate the containing map view’s content insets. If your interface elements partially overlap the map view but do not affect the top and bottom layout guides, set the `automaticallyAdjustsScrollViewInsets` property to `NO` and set the `contentInset` property to a suitable value. ([#5671](https://github.com/mapbox/mapbox-gl-native/pull/5671)) -* Added a property to MLNOfflineStorage, `countOfBytesCompleted`, that indicates the disk space occupied by all cached and offline resources. ([#5585](https://github.com/mapbox/mapbox-gl-native/pull/5585)) - -## 3.3.0 - July 14, 2016 - -### Styles and data - -- Added methods to MLNMapView for obtaining the underlying map data rendered by the current style, along with additional classes to represent complex geometry in that data. ([#5110](https://github.com/mapbox/mapbox-gl-native/pull/5110)) -- Improved performance viewing regions with large landcover polygons when viewing a style that uses the Mapbox Streets source. ([#2444](https://github.com/mapbox/mapbox-gl-native/pull/2444)) -- Fixed a memory leak when using raster resources. ([#5141](https://github.com/mapbox/mapbox-gl-native/pull/5141)) -- Rendering now occurs on the main thread, fixing a hang when calling `-[MLNMapView styleURL]` before the map view has fully loaded or while the application is in the background. ([#2909](https://github.com/mapbox/mapbox-gl-native/pull/2909)) -- Added a `-reloadStyle:` action to MLNMapView to force a reload of the current style. ([#4728](https://github.com/mapbox/mapbox-gl-native/pull/4728)) -- A more specific user agent string is now sent with style and tile requests. ([#4012](https://github.com/mapbox/mapbox-gl-native/pull/4012)) -- Added a new option to `MLNMapDebugMaskOptions`, `MLNMapDebugOverdrawVisualizationMask`, that highlights overlapping drawing operations instead of the usual rendered output. ([#5403](https://github.com/mapbox/mapbox-gl-native/pull/5403)) - -### Interactivity - -- The compass, user dot, and visible annotations are now accessible to VoiceOver users. ([#1496](https://github.com/mapbox/mapbox-gl-native/pull/1496)) -- Added a method to MLNMapView, `-anchorPointForGesture:`, that you can override to anchor gestures at a point other than the user location. ([#5302](https://github.com/mapbox/mapbox-gl-native/pull/5302)) -- Added a property to MLNMapView, `decelerationRate`, that allows you to speed up or slow down the drift animation at the end of a user gesture. You can also use this property to disable the drift animation entirely. ([#5504](https://github.com/mapbox/mapbox-gl-native/pull/5504)) -- Improved responsiveness when zooming in then immediately panning around. ([#4595](https://github.com/mapbox/mapbox-gl-native/pull/4595)) -- Added a new method, `-[MLNMapView cameraThatFitsCoordinateBounds:]`, to get a camera that you can pass into `-setCamera:` that fits the given coordinate bounds. ([#4790](https://github.com/mapbox/mapbox-gl-native/pull/4790)) - -### Annotations - -- MLNPointAnnotation and custom MLNAnnotation implementations (but not MLNMultiPoint) can be backed by an MLNAnnotationView instead of an MLNAnnotationImage. MLNAnnotationView is a subclass of UIView, so you can use Core Animation and other familiar technologies with it. To associate an MLNAnnotation with an MLNAnnotationView, implement `-mapView:viewForAnnotation:` in your MLNMapViewDelegate class. ([#4801](https://github.com/mapbox/mapbox-gl-native/pull/4801)) -- An MLNAnnotation can be relocated by changing its `coordinate` property in a KVO-compliant way. An MLNMultiPoint cannot be relocated. ([#3835](https://github.com/mapbox/mapbox-gl-native/pull/3835)) -- Setting the `image` property of an MLNAnnotationImage to `nil` resets it to the default red pin image and reclaims resources that can be used to customize additional annotations. ([#3835](https://github.com/mapbox/mapbox-gl-native/pull/3835)) -- An MLNPolygon can now have interior polygons, representing holes knocked out of the overall shape. ([#5110](https://github.com/mapbox/mapbox-gl-native/pull/5110)) - -### User location - -- The user dot now moves smoothly between user location updates while user location tracking is disabled. ([#1582](https://github.com/mapbox/mapbox-gl-native/pull/1582)) -- Fixed an issue preventing KVO change notifications from being generated on MLNMapView’s `userTrackingMode` key path when `-setUserTrackingMode:animated:` is called. ([#4724](https://github.com/mapbox/mapbox-gl-native/pull/4724)) -- Fixed a crash setting MLNMapView’s `userLocationVerticalAlignment` property before a user location update has occurred. ([#5278](https://github.com/mapbox/mapbox-gl-native/pull/5278)) -- Mapbox Telemetry is automatically disabled while the host application is running in the iOS Simulator. ([#4726](https://github.com/mapbox/mapbox-gl-native/pull/4726)) - -### Offline maps - -- `MLNOfflinePackProgress` now indicates how many tiles have been downloaded and how much space they take up. ([#4874](https://github.com/mapbox/mapbox-gl-native/pull/4874)) -- Fixed an issue where the tile cache could be included in iCloud backups on the first launch. ([#5124](https://github.com/mapbox/mapbox-gl-native/pull/5124), [#5601](https://github.com/mapbox/mapbox-gl-native/pull/5601)) -- Suppressed “Unable to make space for entry” console spew. ([#4708](https://github.com/mapbox/mapbox-gl-native/pull/4708)) -- Deprecated `-[MLNMapView emptyMemoryCache]`. ([#4725](https://github.com/mapbox/mapbox-gl-native/pull/4725)) - -### Packaging - -- Improved the design of the generated API documentation. ([#5306](https://github.com/mapbox/mapbox-gl-native/pull/5306)) -- Applications linking against the SDK static framework no longer need to add `-ObjC` to the Other Linker Flags (`OTHER_LDFLAGS`) build setting. If you previously added this flag solely for this SDK, removing the flag may potentially reduce the overall size of your application. ([#4641](https://github.com/mapbox/mapbox-gl-native/pull/4641)) -- Removed the `armv7s` slice from the SDK to reduce its size. iPhone 5 and iPhone 5c automatically use the `armv7` slice instead. ([#4641](https://github.com/mapbox/mapbox-gl-native/pull/4641)) -- The SDK is now localizable. No localizations are currently provided, other than English, but if you need a particular localization, you can install the SDK manually and drop a .lproj folder into the framework. ([#4783](https://github.com/mapbox/mapbox-gl-native/pull/4783)) -- Removed unused SVG files from the SDK’s resource bundle. ([#4641](https://github.com/mapbox/mapbox-gl-native/pull/4641)) - -### Other changes - -- Added category methods on NSValue for converting to and from the structure types defined in MLNGeometry.h. ([#4802](https://github.com/mapbox/mapbox-gl-native/pull/4802)) -- Added NSFormatter subclasses for converting geographic coordinates and directions into display strings. ([#4802](https://github.com/mapbox/mapbox-gl-native/pull/4802)) -- Added `MLNCoordinateInCoordinateBounds()`, a function that tests whether or not a coordinate is in a given bounds. ([#5053](https://github.com/mapbox/mapbox-gl-native/pull/5053)) - -## 3.2.3 - June 7, 2016 - -- Fixed an issue preventing `-[MLNMapViewDelegate mapViewDidFinishLoadingMap:]` from being called when returning to the view controller containing the map view from another view controller. ([#5164](https://github.com/mapbox/mapbox-gl-native/pull/5164)) -- Declarations in the API documentation are shown in both Objective-C and Swift. ([realm/jazzy#530](https://github.com/realm/jazzy/pull/530)) - -## 3.2.2 - May 10, 2016 - -- Existing MLNStyle class methods that return default style URLs have been deprecated in favor of new methods that require an explicit style version parameter. The deprecated, unversioned methods continue to return version 8 of the respective styles and will not be updated as new versions of the styles are released. ([#4759](https://github.com/mapbox/mapbox-gl-native/pull/4759)) -- Deprecated `+[MLNStyle emeraldStyleURL]` with no replacement method. To use the Emerald style going forward, we recommend that you use the underlying URL. ([#4759](https://github.com/mapbox/mapbox-gl-native/pull/4759)) -- Added `+[MLNStyle outdoorsStyleURLWithVersion:]` for the new Outdoors style. ([#4759](https://github.com/mapbox/mapbox-gl-native/pull/4759)) -- The Hybrid style is now called Satellite Streets. ([#4759](https://github.com/mapbox/mapbox-gl-native/pull/4759)) - -## 3.2.1 - April 20, 2016 - -- Fixed a hang that could occur if the host application attempts to set user defaults on a background queue. ([#4745](https://github.com/mapbox/mapbox-gl-native/pull/4745)) -- User location heading updates now resume properly when an app becomes active again. ([#4674](https://github.com/mapbox/mapbox-gl-native/pull/4674)) -- Fixed an issue causing hyperlinks in the documentation to be displayed as raw Markdown syntax when viewed in Xcode’s Quick Help popover or sidebar. ([#4760](https://github.com/mapbox/mapbox-gl-native/pull/4760)) - -## 3.2.0 - April 5, 2016 - -- If you’ve previously installed the SDK as a static framework, the installation workflow has changed to address issues when submitting your application to the App Store or installing it on a device. Upon upgrading to this version of the SDK, you’ll need to add Mapbox.bundle to the Copy Bundle Resources build phase and remove Mapbox.framework from the Embed Frameworks build phase. ([#4455](https://github.com/mapbox/mapbox-gl-native/pull/4455)) -- Offline packs can now be downloaded to allow users to view specific regions of the map offline. A new MLNOfflineStorage class provides APIs for managing MLNOfflinePacks. ([#4221](https://github.com/mapbox/mapbox-gl-native/pull/4221)) -- Tiles and other resources are cached in the same file that holds offline resources. The combined cache file is located in a subdirectory of the user’s Application Support directory, which means iOS will not delete the file when disk space runs low. ([#4377](https://github.com/mapbox/mapbox-gl-native/pull/4377)) -- Fixed an issue where the map view’s center would always be calculated as if the view occupied the entire screen. ([#4504](https://github.com/mapbox/mapbox-gl-native/issues/4504)) -- The user dot no longer disappears after panning the map across the antimeridian at low zoom levels. ([#4275](https://github.com/mapbox/mapbox-gl-native/pull/4275)) -- The map no longer recoils when panning quickly at low zoom levels. ([#4214](https://github.com/mapbox/mapbox-gl-native/pull/4214)) -- Fixed an issue causing the map to pan the wrong way when the user pinches unevenly. ([#4427](https://github.com/mapbox/mapbox-gl-native/pull/4427)) -- The maximum zoom level is capped at 21 due to rendering issues at higher zoom levels. ([#4417](https://github.com/mapbox/mapbox-gl-native/pull/4417)) -- An icon laid out along a line no longer appears if it would extend past the end of the line. Some one-way arrows no longer point the wrong way. ([#3839](https://github.com/mapbox/mapbox-gl-native/pull/3839)) -- Fixed warping of dashed lines near sharp corners. ([#3914](https://github.com/mapbox/mapbox-gl-native/pull/3914)) -- Telemetry location gathering now occurs only when the device is in motion. ([#4115](https://github.com/mapbox/mapbox-gl-native/pull/4115)) -- An account’s monthly active users metric only counts a user once a map view is displayed to that user. ([#3713](https://github.com/mapbox/mapbox-gl-native/pull/3713)) -- A .dSYM bundle is included with the dynamic framework to facilitate symbolication of crash logs. -- Updated documentation to reflect the requirement that you must embed the dynamic framework in the “Embedded Binaries” section in Xcode. ([#4011](https://github.com/mapbox/mapbox-gl-native/issues/4011)) -- Polygons and polylines now default to using the map view’s tint color. ([#4028](https://github.com/mapbox/mapbox-gl-native/pull/4028)) -- The user dot no longer lags when panning the map. ([#3683](https://github.com/mapbox/mapbox-gl-native/pull/3683)) -- The Improve This Map tool now uses the same zoom level that is currently being shown in the map view. ([#4068](https://github.com/mapbox/mapbox-gl-native/pull/4068)) -- Fixed a formatting issue in the documentation for `MLNCoordinateBoundsIsEmpty()`. ([#3958](https://github.com/mapbox/mapbox-gl-native/pull/3958)) - -## 3.1.2 - February 22, 2016 - -- You can once again install the static framework without manually linking several framework and library dependencies. ([#4029](https://github.com/mapbox/mapbox-gl-native/pull/4029)) -- The location manager used by MLNMapView to show the user’s location is now paused when the application is sent to the background. ([#4034](https://github.com/mapbox/mapbox-gl-native/pull/4034)) - -## 3.1.1 - February 15, 2016 - -- Corrected the dynamic framework’s minimum deployment target to iOS 8.0. ([#3872](https://github.com/mapbox/mapbox-gl-native/pull/3872)) -- Fixed Fabric compatibility. ([#3847](https://github.com/mapbox/mapbox-gl-native/pull/3847)) -- Fixed a crash that can occur when reselecting an annotation. ([#3881](https://github.com/mapbox/mapbox-gl-native/pull/3881)) -- Fixed an issue preventing the Latitude inspectable from working when it is set before setting the Zoom Level inspectable in Interface Builder. ([#3886](https://github.com/mapbox/mapbox-gl-native/pull/3886)) -- Fixed an issue that incorrectly expanded the tappable area of an annotation and prevented the annotation’s alignment rect insets from having any effect on the tappable area. ([#3898](https://github.com/mapbox/mapbox-gl-native/pull/3898)) -- Fixed an issue preventing `-[MLNMapViewDelegate mapView:tapOnCalloutForAnnotation:]` from being called when a non-custom callout view is tapped. ([#3875](https://github.com/mapbox/mapbox-gl-native/pull/3875)) - -## 3.1.0 - February 5, 2016 - -- The SDK is now distributed as a dynamic framework instead of a static library, resulting in a simpler installation workflow and significantly reduced download size. The framework contains both simulator and device content. If you install the dynamic framework manually, you’ll need to strip out the simulator content before submitting your application to the App Store due to [an Xcode bug](http://www.openradar.me/radar?id=6409498411401216); see the installation instructions included with the framework for details. ([#3183](https://github.com/mapbox/mapbox-gl-native/pull/3183)) -- Fixed an issue causing the entire MLNMapView to leak. ([#3448](https://github.com/mapbox/mapbox-gl-native/pull/3448)) -- `MLNMapView` methods that alter the viewport now accept optional completion handlers. ([#3090](https://github.com/mapbox/mapbox-gl-native/pull/3090)) -- You can now modify an annotation’s image after adding the annotation to the map. ([#3146](https://github.com/mapbox/mapbox-gl-native/pull/3146)) -- Tapping now selects annotations more reliably. Tapping near the top of a large annotation image now selects that annotation. An annotation image’s alignment insets influence how far away the user can tap and still select the annotation. For example, if your annotation image has a large shadow, you can keep that shadow from being tappable by excluding it from the image’s alignment rect. ([#3261](https://github.com/mapbox/mapbox-gl-native/pull/3261)) -- Annotations remain visible after switching to a different style. ([#3049](https://github.com/mapbox/mapbox-gl-native/pull/3049)) -- The minimum and maximum zoom levels can now be configured using the `minimumZoomLevel` and `maximumZoomLevel` properties, respectively. The map is no longer limited to zoom level 18: by default, the maximum zoom level is now 20, allowing for a more detailed map in urban areas. ([#3712](https://github.com/mapbox/mapbox-gl-native/pull/3712)) -- A new method on MLNMapView, `-flyToCamera:withDuration:completionHandler:`, lets you transition between viewpoints along an arc as if by aircraft. ([#3171](https://github.com/mapbox/mapbox-gl-native/pull/3171), [#3301](https://github.com/mapbox/mapbox-gl-native/pull/3301)) -- MLNMapCamera’s `altitude` values now match those of MKMapCamera. ([#3362](https://github.com/mapbox/mapbox-gl-native/pull/3362)) -- MLNMapView properties like `centerCoordinate` and `camera` now offset the center to account for any translucent top or bottom bar. As a result, when user tracking is enabled and the map view is an immediate child of a view controller, the user dot is centered in the unobscured portion of the map view. To override this offset, modify the `contentInset` property; you may also need to set the containing view controller’s `automaticallyAdjustsScrollViewInsets` property to `NO`. ([#3583](https://github.com/mapbox/mapbox-gl-native/pull/3583)) -- In user tracking mode, the user dot stays in a fixed position within MLNMapView while the map pans smoothly. A new property, `userLocationVerticalAlignment`, determines the user dot’s fixed position. ([#3589](https://github.com/mapbox/mapbox-gl-native/pull/3589)) -- When the user tracking mode is set to `MLNUserTrackingModeFollowWithCourse`, an optional `targetCoordinate` is kept within sight at all times as the user changes location. This property, in conjunction with the `userLocationVerticalAlignment` property, may be useful for displaying the user’s progress toward a waypoint. ([#3680](https://github.com/mapbox/mapbox-gl-native/pull/3680)) -- Heading or course tracking mode can now be enabled as soon as an MLNMapView is initialized. ([#3680](https://github.com/mapbox/mapbox-gl-native/pull/3680)) -- Zooming and rotation gestures no longer disable user tracking mode. ([#3589](https://github.com/mapbox/mapbox-gl-native/pull/3589)) -- User tracking mode starts out at a lower zoom level by default. ([#3589](https://github.com/mapbox/mapbox-gl-native/pull/3589)) -- Fixed an issue with small map views not properly fitting annotations within bounds. ([#3407](https://github.com/mapbox/mapbox-gl-native/pull/3407)) -- When the user rotates the map to within 7° of true north, the map view now snaps to true north. ([#3403](https://github.com/mapbox/mapbox-gl-native/pull/3403)) -- The map view’s background can now be transparent or translucent, as long as the style’s background layer is transparent or translucent and `MLNMapView.opaque` is set to `NO`. ([#3096](https://github.com/mapbox/mapbox-gl-native/pull/3096)) -- Documentation is now generated by [jazzy](https://github.com/realm/jazzy) instead of appledoc. ♪♫ ([#3203](https://github.com/mapbox/mapbox-gl-native/pull/3203)) -- New API to provide a custom callout view to the map for annotations. ([#3456](https://github.com/mapbox/mapbox-gl-native/pull/3456)) -- Made telemetry on/off setting available in-app. ([#3445](https://github.com/mapbox/mapbox-gl-native/pull/3445)) -- Fixed an issue with users not being counted by Mapbox if they had disabled telemetry. ([#3495](https://github.com/mapbox/mapbox-gl-native/pull/3495)) -- Fixed crash caused by MLNAnnotationImage with non-integer width or height ([#2198](https://github.com/mapbox/mapbox-gl-native/issues/2198)) -- Fixed “include of non-modular header” errors in Swift projects managed by CocoaPods. ([#3679](https://github.com/mapbox/mapbox-gl-native/pull/3679)) -- Avoids triggering the blue background location status bar when user has granted "when in use" permission. ([#3671](https://github.com/mapbox/mapbox-gl-native/issues/3671)) -- Deprecated the `debugActive` property and `-toggleDebug` method on MLNMapView in favor of a new `debugMask` property that exposes individual style debugging options. ([#3742](https://github.com/mapbox/mapbox-gl-native/pull/3742)) - -## 3.0.1 - December 7, 2015 - -- Fixed CoreTelephony.framework crash. ([#3170](https://github.com/mapbox/mapbox-gl-native/pull/3170)) -- Fixed an issue preventing the compass from responding to taps after the compass is moved programmatically. ([#3117](https://github.com/mapbox/mapbox-gl-native/pull/3117)) -- CocoaPods is now distributed via a (static) framework. ([#3181](https://github.com/mapbox/mapbox-gl-native/issues/3181)) - -## 3.0.0 - November 23, 2015 - -- If you install this SDK via CocoaPods, CocoaPods version 0.38.0 or above is required. ([#2132](https://github.com/mapbox/mapbox-gl-native/pull/2132)) -- The `styleID` property has been removed from MLNMapView. Instead, set the `styleURL` property to an NSURL in the form `mapbox://styles/STYLE_ID`. If you previously set the style ID in Interface Builder’s Attributes inspector, delete the `styleID` entry from the User Defined Runtime Attributes section of the Identity inspector, then set the new “Style URL” inspectable to a value in the form `mapbox://styles/STYLE_ID`. ([#2632](https://github.com/mapbox/mapbox-gl-native/pull/2632)) -- Default styles such as Streets are no longer bundled with the SDK; instead, they are loaded at runtime from the style API on mapbox.com. As always, you can use these default styles with any valid access token, and Streets continues to be `MLNMapView`’s initial style. The `bundledStyleURLs` property on `MLNMapView` has been deprecated in favor of several class methods on `MLNStyle` that provide direct access to the default styles. ([#2746](https://github.com/mapbox/mapbox-gl-native/pull/2746)) -- The SDK now builds with Bitcode enabled. A version of libMapbox.a with Bitcode disabled is also available. ([#2332](https://github.com/mapbox/mapbox-gl-native/issues/2332), [#3003](https://github.com/mapbox/mapbox-gl-native/pull/3003)) -- The style URL can be set to a local resource: `asset://local-color.json` and `local-color.json` both resolve to a file named `local-color.json` in the application’s root folder. ([#3087](https://github.com/mapbox/mapbox-gl-native/pull/3087)) -- The double-tap-drag gesture for zooming in and out is now consistent with the Google Maps SDK. ([#2153](https://github.com/mapbox/mapbox-gl-native/pull/2153)) -- A new `MLNAnnotationImage.enabled` property allows you to disable touch events on individual annotations. ([#2501](https://github.com/mapbox/mapbox-gl-native/pull/2501)) -- Fixed a rendering issue that caused one-way arrows along tile boundaries to point due east instead of in the direction of travel. ([#2530](https://github.com/mapbox/mapbox-gl-native/pull/2530)) -- Fixed an issue that prevented zoom level–dependent style properties from updating after zooming programmatically with animation. ([#2951](https://github.com/mapbox/mapbox-gl-native/pull/2951)) -- Performance and appearance improvements during annotation adds & removes. ([#1688](https://github.com/mapbox/mapbox-gl-native/issues/1688)) -- Overall improved performance during renders by not rendering faster than necessary. ([#1975](https://github.com/mapbox/mapbox-gl-native/issues/1975)) -- Fixed a rendering issue with styles that use the `background-pattern` property. ([#2531](https://github.com/mapbox/mapbox-gl-native/pull/2531)) -- Fixed a crash when reusing a single `MLNMapView` across multiple `UIViewController`s. ([#2969](https://github.com/mapbox/mapbox-gl-native/pull/2969)) -- Fixed a crash on iPod touch and other devices or simulators without a cell carrier. ([#2687](https://github.com/mapbox/mapbox-gl-native/issues/2687)) -- Eliminated flickering when opening and closing an overlay, such as an alert or action sheet. ([#2309](https://github.com/mapbox/mapbox-gl-native/pull/2309)) -- Labels can now line wrap on hyphens and other punctuation. ([#2598](https://github.com/mapbox/mapbox-gl-native/pull/2598)) -- A new delegate callback was added for observing taps to annotation callout views. ([#2596](https://github.com/mapbox/mapbox-gl-native/pull/2596)) -- `-mapViewRegionIsChanging:` is now sent to the map view’s delegate during gestures. ([#2700](https://github.com/mapbox/mapbox-gl-native/pull/2700)) -- Improved gesture recognition while the map is tilted. ([#2770](https://github.com/mapbox/mapbox-gl-native/pull/2770)) -- `-mapViewWillStartLoadingMap:` and `-mapViewDidFinishLoadingMap:` delegate methods now work. ([#2706](https://github.com/mapbox/mapbox-gl-native/pull/2706)) -- Removed CoreTelephony.framework dependency. ([#2581](https://github.com/mapbox/mapbox-gl-native/pull/2581)) -- Improved user location annotation responsiveness. ([#2643](https://github.com/mapbox/mapbox-gl-native/pull/2643)) - -## 2.1.2 - September 15, 2015 - -- Built with Xcode 6.4 to not yet trigger Bitcode compatibility until Xcode 7 stabilizes. ([#2332](https://github.com/mapbox/mapbox-gl-native/issues/2332)) - -## 2.1.1 - September 15, 2015 - -- Fixes for Xcode 7 and Bitcode. ([#2238](https://github.com/mapbox/mapbox-gl-native/pull/2238)) - -## 2.1.0 - September 14, 2015 - -- A two-finger vertical swipe now tilts the map into perspective mode. ([#2116](https://github.com/mapbox/mapbox-gl-native/pull/2116)) -- A new `MLNMapCamera` API allows you to transition multiple viewpoint properties, including rotation and pitch, simultaneously with an optional custom duration and timing function. ([#2193](https://github.com/mapbox/mapbox-gl-native/pull/2193)) -- A new user tracking mode, `MLNUserTrackingModeFollowWithCourse`, has been added for indicating the current direction of travel. ([#2068](https://github.com/mapbox/mapbox-gl-native/pull/2068)) -- Version 8 (`v8`) of the [Mapbox GL style spec](https://maplibre.org/maplibre-style-spec/) is now required. If you are using a custom `v7` style, it needs to be upgraded using [this migrator script](https://github.com/mapbox/mapbox-gl-style-spec/blob/mb-pages/migrations/v7.js). ([#2052](https://github.com/mapbox/mapbox-gl-native/pull/2052)) -- Applications built with Mapbox GL no longer crash when Location Services launches them in background mode. ([#1821](https://github.com/mapbox/mapbox-gl-native/pull/1821), [#1869](https://github.com/mapbox/mapbox-gl-native/pull/1869)) -- Fixed a crash when adding annotations to an `MLNMapView` inside `-viewDidLoad`. ([#1874](https://github.com/mapbox/mapbox-gl-native/pull/1874)) -- The user location annotation view now indicates the location reading’s accuracy and the device’s heading. ([#2010](https://github.com/mapbox/mapbox-gl-native/pull/2010)) -- Eliminated linker warnings and errors when building against the iOS 9.0 SDK in Xcode 7. ([#1962](https://github.com/mapbox/mapbox-gl-native/pull/1962)) -- Worked around a bug in the iOS 9.0 SDK that caused a crash on launch. ([#1958](https://github.com/mapbox/mapbox-gl-native/pull/1958)) -- User location tracking no longer sends `MLNMapView` into an invalid region on iOS 9. ([#1925](https://github.com/mapbox/mapbox-gl-native/pull/1925)) -- Eliminated console spew in the iOS demo application that was related to Mapbox Metrics HTTP requests. ([#1937](https://github.com/mapbox/mapbox-gl-native/issues/1937)) -- Implemented `-[MLNMapView showAnnotations:animated:]`. ([#2050](https://github.com/mapbox/mapbox-gl-native/pull/2050)) -- Fixed a crash adding a shape annotation with zero points. ([#2098](https://github.com/mapbox/mapbox-gl-native/pull/2098)) -- Debug mode now displays information useful for debugging the label collision algorithm. ([#1808](https://github.com/mapbox/mapbox-gl-native/pull/1808)) -- Minor style updates. ([#1910](https://github.com/mapbox/mapbox-gl-native/pull/1910)) -- The CocoaPods pod now contains a `README.md` file. ([#1886](https://github.com/mapbox/mapbox-gl-native/pull/1886)) - -## 2.0.0 - August 21, 2015 - -Repackaging 2.0.0-pre.1 as it contained no issues. - -## 2.0.0-pre.1 - August 21, 2015 - -Repackaging 0.5.1 as the Mapbox iOS SDK 2.0.0 series. - -## 0.5.1 - July 13, 2015 - -### iOS - -- Added support for CocoaPods 0.38.0. ([#1876](https://github.com/mapbox/mapbox-gl-native/pull/1876)) - -## 0.5.0 - July 9, 2015 - -### Core - -- Support for runtime marker imagery. ([#941](https://github.com/mapbox/mapbox-gl-native/pull/941)) -- Added `Map::fitBounds()` for region-based viewport setting. ([#1092](https://github.com/mapbox/mapbox-gl-native/issues/1092)) -- Added a raster satellite bundled style and improved raster rendering. ([#963](https://github.com/mapbox/mapbox-gl-native/issues/963)) -- Improved round line joins for semi-transparent lines. ([#1839](https://github.com/mapbox/mapbox-gl-native/pull/1839)) -- Improved map render lifecycle notifications. ([#1026](https://github.com/mapbox/mapbox-gl-native/issues/1026)) -- Fixed a bug that caused annotations not to show at zoom level zero. ([#1279](https://github.com/mapbox/mapbox-gl-native/issues/1279)) -- Fixed a bug with the ordering of shape layers. ([#1866](https://github.com/mapbox/mapbox-gl-native/pull/1866)) -- Other bug fixes and performance improvements. - -### iOS - -- **Breaking:** Headers now make use of lightweight generics, eliminating many unnecessary casts when working with annotations in Swift 2.0 in Xcode 7. ([#1711](https://github.com/mapbox/mapbox-gl-native/pull/1711)) -- **Breaking:** `-mapView:symbolNameForAnnotation:` has been removed from the `MLNMapViewDelegate` protocol. Implement `-mapView:imageForAnnotation:` instead, which accepts images at runtime. ([#941](https://github.com/mapbox/mapbox-gl-native/pull/941)) -- **Breaking:** `MLNMapView.direction` is now expressed in terms of degrees clockwise from true north, as indicated in the documentation, rather than counterclockwise. ([#1789](https://github.com/mapbox/mapbox-gl-native/pull/1789)) -- A Satellite style showing Mapbox Satellite imagery is now bundled with Mapbox GL. ([#1845](https://github.com/mapbox/mapbox-gl-native/pull/1845)) -- Improved `UIView` tracking to the map. ([#1813](https://github.com/mapbox/mapbox-gl-native/pull/1813)) -- Delegate method `-[MLNMapViewDelegate mapView:didFailToLocateUserWithError:]` now works. ([#1608](https://github.com/mapbox/mapbox-gl-native/pull/1608)) -- It is now possible to fit the map’s viewport to a coordinate bounding box via `-[MLNMapView setVisibleCoordinateBounds:animated:]` or to a specific set of coordinates via `-[MLNMapView setVisibleCoordinates:count:edgePadding:animated:]`. ([#1783](https://github.com/mapbox/mapbox-gl-native/pull/1783), [#1795](https://github.com/mapbox/mapbox-gl-native/pull/1795)) -- The logo and ℹ️ no longer disappear or get distorted after embedding MLNMapView in a different view, and you can now access these subviews directly via properties on MLNMapView. ([#1779](https://github.com/mapbox/mapbox-gl-native/pull/1779), [#1815](https://github.com/mapbox/mapbox-gl-native/pull/1815)) -- Raster tiles now look sharper midway between two zoom levels. ([#1843](https://github.com/mapbox/mapbox-gl-native/pull/1843)) -- Resetting the map rotation to north no longer also resets the user location tracking mode. ([#1809](https://github.com/mapbox/mapbox-gl-native/pull/1809)) -- `-[MLNMapView convertPoint:toCoordinateFromView:]` now returns accurate coordinates on iPhone 6. ([#1827](https://github.com/mapbox/mapbox-gl-native/pull/1827)) -- Fixed an issue in which `-[MLNMapView direction]` would sometimes return 360 instead of 0. ([#1829](https://github.com/mapbox/mapbox-gl-native/pull/1829)) -- Build against iOS 8.4. ([#1868](https://github.com/mapbox/mapbox-gl-native/pull/1868)) - -## 0.4.0 - June 19, 2015 - -### Core - -- Support for polyline and polygon shape annotations. ([#1655](https://github.com/mapbox/mapbox-gl-native/issues/1655)) -- Improved placement and density of labels. ([#1666](https://github.com/mapbox/mapbox-gl-native/issues/1666), [blog](https://www.mapbox.com/blog/better-label-placement-mapbox-mobile/)) -- Improved z-ordering appearance of point markers. ([#988](https://github.com/mapbox/mapbox-gl-native/issues/988)) -- Fixed an issue in which certain features, such as roundabouts, were not rendered completely. ([#1725](https://github.com/mapbox/mapbox-gl-native/issues/1725)) -- Many bug fixes and performance and stability improvements. -- Improved tests. - -### iOS - -- **Breaking:** `MLNMapView` no longer manages Mapbox access tokens directly; an access token cannot be passed in when initializing the map view. Instead, set `MLNMapboxAccessToken` to your access token in your app’s `Info.plist` file, or call `+[MLNAccountManager setAccessToken:]` before initializing the map view. If you were setting the access token inside an Interface Builder inspectable, also remove it from the User Defined Runtime Attributes section of the Identity inspector. ([#1553](https://github.com/mapbox/mapbox-gl-native/issues/1553)) -- **Breaking:** `MLNAccountManager`'s `-setMapboxMetricsEnabledSettingShownInApp:` has been removed. If you implement a Mapbox Metrics switch inside your app, instead of inside a Settings bundle, set `MLNMapboxMetricsEnabledSettingShownInApp` to `YES` in the `Info.plist` file. ([#1553](https://github.com/mapbox/mapbox-gl-native/issues/1553)) -- **Breaking:** `MLNMapView`'s `-mapID` has been renamed to `-styleID`. ([#1561](https://github.com/mapbox/mapbox-gl-native/issues/1561)) -- Headers have been audited for nullability, improving type safety in both Objective-C and Swift 1.2 when compiling with Xcode 6.3 or above. ([#1578](https://github.com/mapbox/mapbox-gl-native/issues/1578)) -- Fixed an issue in which the map would sometimes spin 180° while rotating the map with two fingers. ([#1453](https://github.com/mapbox/mapbox-gl-native/issues/1453)) -- Added a shortcut to the Mapbox Metrics switch in `MLNMapView`'s action sheet that is attached to the ℹ️ button. ([#1611](https://github.com/mapbox/mapbox-gl-native/issues/1611)) -- `MLNMapView` now supports Interface Builder designables. When you add an `MLNMapView` to a storyboard, it displays instructions for getting set up directly on the storyboard canvas. ([#1573](https://github.com/mapbox/mapbox-gl-native/issues/1573)) -- The default title for the user location annotation is now “You Are Here”. You can customize the title by setting `mapView.userAnnotation.title`. ([#1559](https://github.com/mapbox/mapbox-gl-native/issues/1559)) -- Internal use of the Reachability library has been cleaned up so that your app can include its own copy of Reachability. ([#1718](https://github.com/mapbox/mapbox-gl-native/issues/1718)) -- Now distribute a binary stripped of debugging symbols by default with an optional, secondary symbols build. ([#1650](https://github.com/mapbox/mapbox-gl-native/issues/1650)) - -## 0.3.1 - May 15, 2015 - -- Temporarily removed `IBDesignable` support on iOS. - -## 0.3.0 - May 14, 2015 - -- Initial iOS beta release. - -Known issues: - -- None. diff --git a/platform/ios/platform/ios/CONTRIBUTING.md b/platform/ios/platform/ios/CONTRIBUTING.md deleted file mode 100644 index 205307f08..000000000 --- a/platform/ios/platform/ios/CONTRIBUTING.md +++ /dev/null @@ -1,259 +0,0 @@ -# Contributing to MapLibre Native for iOS - -This document explains how to build MapLibre Native for iOS from source. It is intended for advanced developers who wish to contribute to the library. - -## Requirements - -See the "Requirements" section in [INSTALL.md](INSTALL.md). - -## Building the SDK - -Create and open an Xcode workspace that includes both the SDK source and some Objective-C test applications by running: - -```bash -# make and open the Xcode workspace -make iproj - -# make Xcode workspace, but run in headless mode -make iproj CI=1 - -# Make Frameworks -make xcframework BUILDTYPE=Release -``` - -### Xcode schemes - -Before building, use the scheme picker button in the toolbar to change the scheme to **iosapp** and the destination to one of the simulators or connected devices listed in the menu. - -**iosapp** is only one of several shared schemes. Others include: - -* **dynamic** builds the SDK as a dynamic framework. -* **static** builds the SDK as a static library and separate resource bundle. -* **dynamic+static** is a combination of the **dynamic** and **static** schemes. -* **CI** builds exactly what gets built by our continuous integration service. -* **bench** is a simple benchmarking application. For more consistent results between runs, run `platform/ios/benchmark/assets/{glyphs,tiles}/download.sh` to download any necessary resources. - -If you don’t have an Apple Developer account, change the destination to a simulator before you build and run the app. - -### Packaging builds - -Install [jazzy](https://github.com/realm/jazzy) for generating API documentation: - -```bash -[sudo] gem install jazzy -``` - -Build and package the SDK by using the `make iframework` command. You can customize the build output by passing the following arguments into the `make` invocation: - -* `BUILDTYPE=Release` will optimize for distribution. Defaults to `Debug`. -* `BUILD_DEVICE=false` builds only for the iOS Simulator. -* `FORMAT=dynamic` builds only a dynamic framework. `FORMAT=static` builds only a static framework, for legacy compatibility. -* `SYMBOLS=NO` strips the build output of debug symbols. Defaults to `YES`. - -An example command that creates a dynamic framework suitable for eventual App Store distribution: - -```bash -make iframework BUILDTYPE=Release -``` - -The products of these build commands can be found in the `build/ios/pkg` folder at the base of the repository. - -## Documentation - -We are moving away from the legacy Jazzy documentation towards Apple's documentation generator [DocC](https://developer.apple.com/documentation/docc). DocC has great Xcode intergration. See the [open issues](https://github.com/maplibre/maplibre-native/issues?q=is%3Aissue+is%3Aopen+label%3Aios+label%3Adocumentation) if you want to help. - -- For a general introduction to DocC, including for example a demonstration of the custom Markdown that DocC uses that allows for cross-linking, see this WWDC video: https://developer.apple.com/videos/play/wwdc2021/10166/ -- For instructions of how to write a tutorial in DooC format: https://developer.apple.com/documentation/docc/building-an-interactive-tutorial -- For instructions of how to write supplemental documentation: https://www.swift.org/documentation/docc/adding-supplemental-content-to-a-documentation-catalog - -The most convenient way to generate the DocC based documentation locally is using Xcode by going to Product > Build Documentation. A new window will pop up ([screenshot](https://user-images.githubusercontent.com/649392/219097391-710a8421-df82-4b5e-864f-e3317cea0b8e.png)). - -### Jazzy Documentation - -The code samples in the header files & [iOS API Documentation](https://maplibre.org/maplibre-native/ios/api/) are generated by a unit test. - -An example of auto generated documentation is the unit test -[MLNDocumentationExampleTests.swift](../darwin/test/MLNDocumentationExampleTests.swift) -which generates styling examples in the `.h` file for styling either a -[Circle](https://maplibre.org/maplibre-native/ios/api/Classes/MLNCircleStyleLayer.html), -[Heatmap](https://maplibre.org/maplibre-native/ios/api/Classes/MLNHeatmapStyleLayer.html), or -[Line](https://maplibre.org/maplibre-native/ios/api/Classes/MLNLineStyleLayer.html). For more details see [Adding a code example](DEVELOPING.md#adding-a-code-example). - -Use `make` to update API documentation: - -```bash -# Updates the header `.h` with unit tested code from Swift -make darwin-style-code - -# refresh the documentation in the folder `documentation/` -make idocument - -# open the folder `documentation/` in macOS Finder -open documentation/ -# serve documentation/ -``` - -## Contributing - -### Making any symbol public - -To add any Objective-C type, constant, or member to the iOS SDK’s public interface: - -1. Ensure that the symbol is pure Objective-C and does not rely on any language features specific to Objective-C++ or the C11 dialect of C – so no namespaced types or classes named with emoji! 🙃 Most projects that depend on this SDK are either written in pure Objective-C (GNU99 dialect) or Swift, which cannot yet bridge C++ types. -1. Name the symbol according to [Cocoa naming conventions](https://developer.apple.com/library/prerelease/content/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html#//apple_ref/doc/uid/10000146i). Use the `MLN` class prefix to avoid conflicts with client code. If the symbol has an analogue in MapKit, name the symbol according to MapKit. -1. Provide full documentation comments. We use [jazzy](https://github.com/realm/jazzy/) to produce the documentation found in the SDK distribution and [on the website for this SDK](https://maplibre.org/maplibre-native/ios/api/). We also recognize that many developers rely on Xcode’s Quick Help feature. jazzy supports Markdown formatting; however, Quick Help supports only [HeaderDoc](https://developer.apple.com/legacy/library/documentation/DeveloperTools/Conceptual/HeaderDoc/intro/intro.html) syntax and a subset of Doxygen syntax. For hyperlinks, use HTML syntax, which is recognized by both tools. - -### Making a type or constant public - -To add an Objective-C class, protocol, category, typedef, enumeration, or global constant to the iOS maps SDK’s public interface: - -1. _(Optional.)_ Add the macro `MLN_EXPORT` prior to the declaration for classes and global constants when adding them in shared headers located in `platform/darwin`. To use this macro, include `MLNFoundation.h`. You can check whether all public symbols are exported correctly by running `make darwin-check-public-symbols`. -1. _(Optional.)_ Add the type or constant’s name to the relevant category in the `custom_categories` section of [the jazzy configuration file](./jazzy.yml). This is required for classes and protocols and also recommended for any other type that is strongly associated with a particular class or protocol. If you leave out this step, the symbol will appear in an “Other” section in the generated HTML documentation’s table of contents. -1. _(Optional.)_ If the symbol would also be publicly exposed in the macOS maps SDK, consult [the companion macOS document](../macos/DEVELOPING.md#making-a-type-or-constant-public) for further instructions. - -### Adding a source code file - -To add an Objective-C header or implementation file to the iOS maps SDK: - -1. Add the file to the Headers or Compile Sources build phase, as appropriate, of both the “dynamic” and “static” targets. You can either use the Build Phases tab of the project editor or the Target Membership section of the File inspector. -1. Audit new headers for nullability. Typically, you will wrap a header with `NS_ASSUME_NONNULL_BEGIN` and `NS_ASSUME_NONNULL_END`. -1. _(Optional.)_ If it’s a public header, change its visibility from Project to Public and import it in [the iOS SDK’s umbrella header](./src/Mapbox.h). -1. _(Optional.)_ If the file would also be used by the macOS maps SDK, make sure it’s in [platform/darwin/src/](../darwin/src/), then consult [the companion macOS document](../macos/DEVELOPING.md#adding-a-source-code-file) for further instructions. -1. Run `scripts/generate-file-lists.js` to update the generated source file list for third party build systems. - -### Adding a resource - -To add a resource (such as an image, SSL certificate, property list, or strings table) to the iOS maps SDK: - -1. Add the header to the Copy Bundle Resources build phase of both the “dynamic” and “bundle” targets. You can either use the Build Phases tab of the project editor or the Target Membership section of the File inspector. -1. _(Optional.)_ If the resource would also be used by the macOS maps SDK, make sure it’s in [platform/darwin/resources/](../darwin/resources/), then consult [the companion macOS document](../macos/DEVELOPING.md#adding-a-resource) for further instructions. - -### Adding user-facing text - -To add or update text that the user may see in the iOS maps SDK: - -1. Make sure the implementation file imports [NSBundle+MLNAdditions.h](../darwin/src/NSBundle+MLNAdditions.h). -1. Use the `NSLocalizedStringWithDefaultValue()` macro: - * `key` is a unique identifier that won’t change if the user-facing text ever needs to change. - * `tbl` is `Foundation` in code shared between the iOS and macOS maps SDKs, or `nil` otherwise. - * `bundle` is `nil`; the redefined macro looks for the SDK bundle at runtime and ignores this argument. - * `val` is the English string. -1. _(Optional.)_ When dealing with a number followed by a pluralized word, do not split the string. Instead, use a format string and make `val` ambiguous, like `%d file(s)`. Then pluralize for English in the appropriate [.stringsdict file](https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPInternational/StringsdictFileFormat/StringsdictFileFormat.html). See [platform/darwin/resources/en.lproj/Foundation.stringsdict](../darwin/resources/en.lproj/Foundation.stringsdict) for an example. Localizers should do likewise for their languages. -1. Run `make genstrings` and commit any changes it makes to .strings files. The make rule also updates the macOS maps SDK’s strings tables. - -### Adding a localization - -> **Warning** -> This section is outdated. - -Translations of all the Mapbox GL Native SDKs are managed [in Transifex](https://www.transifex.com/mapbox/mapbox-gl-native/). If your language already has a translation, feel free to complete or proofread it. Otherwise, please [request your language](https://www.transifex.com/mapbox/mapbox-gl-native/languages/). Note that we’re primarily interested in languages that iOS supports as system languages. - -Once you’ve finished translating the SDK into a new language in Transifex, perform these steps to make Xcode aware of the translation: - -1. In ios.xcworkspace, open the project editor for ios.xcodeproj. Using the project editor’s sidebar or tab bar dropdown, go to the “ios” project; under the Localizations section of the Info tab, click the + button to add your language to the project. -1. In the sheet that appears, select all the .strings and .stringsdict files but not the .storyboard file. (LaunchScreen.storyboard is part of the iosapp example application, which is not localized.) If your language lacks declension and pluralization, as in the case of Chinese, omit the .stringsdict files. -1. In the Project navigator, expand each .stringsdict file in the project. An additional version for your localization should be listed; translate it. See Apple’s documentation on the [.stringsdict format](https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPInternational/StringsdictFileFormat/StringsdictFileFormat.html). -1. In the Project navigator, select Demo App/Localizable.strings and then, in the File Inspector, check the box for your new localization. -1. Repeat the steps above in macos.xcworkspace. - -The .strings files should still be in the original English – that’s expected. Now you can pull your translations into this repository: - -1. _(First time only.)_ Download the [`tx` command line tool](https://docs.transifex.com/client/installing-the-client) and [configure your .transifexrc](https://docs.transifex.com/client/client-configuration). -1. Run `tx pull -a`. -1. Convert any added .strings files from UTF-16 encoding to UTF-8 encoding to facilitate diffing and merging. You can convert the file encoding using Xcode’s File inspector or the following command (substituting _MYLANG_ for the locale code): - -``` -find platform/{darwin,ios}/resources platform/macos/sdk -path '*/MYLANG.lproj/*.strings' -exec textutil -convert txt -extension strings -inputencoding UTF-16 -encoding UTF-8 {} -output {} \; -``` - -### Adding a code example - -To add an example code listing to the documentation for a class or class member: - - 1. Add a test case named in the form `testMLNClass` or `testMLNClass$method` to [MLNDocumentationExamplesTests](../darwin/test/MLNDocumentationExampleTests.swift). - 2. Wrap the code you'd like to appear in the documentation within the - following comment blocks: - ``` - //#-example-code - ... - //#-end-example-code - ``` - 3. Insert an empty Swift code block inside the header file where you'd like the - example code to be inserted. - 4. Run `make darwin-update-examples` to extract example code from the test - method below and insert it into the header. - -[SourceKitten](https://github.com/jpsim/SourceKitten/) is required and will be installed automatically using Homebrew. - -### Customizing compilation settings - -You can provide an optional and custom [`xcconfig`](https://help.apple.com/xcode/mac/current/#/dev745c5c974) file named `platform/darwin/developer.xcconfig` to set custom build options. This file is ignored by git. These custom settings apply to all configurations (`Debug`, `Release`, `RelWithDebInfo`), but do **not** apply to the core `mbgl` files. This mechanism allows you to try different compiler settings (for example when testing an Xcode beta). - -## Testing - -You can review test results in `$(IOS_OUTPUT_PATH)/Logs/Test`. - -`make ios-test` builds and runs unit tests of cross-platform code and of the SDK. Other types of tests available include: - -* `make ios-integration-test` runs UI tests from the "Integration Test Harness" scheme. -* `make ios-sanitize` runs unit tests from the "CI" scheme with the Thread Sanitizer and Undefined Behavior Sanitizer enabled. -* `make ios-sanitize-address` runs unit tests from the "CI" scheme with the Address Sanitizer enabled. -* `make ios-static-analyzer` runs unit tests from the "CI" scheme with the Static Analyzer enabled. -* `make ios-uitest` runs user interface testing from the "iosapp" scheme. - - -These commands are run by default on a single Simulator. To enable legacy iOS versions and more device types, add `MORE_SIMULATORS=YES`. Use `IOS_LATEST=YES`, `IOS_11=YES`, etc. to test on specific iOS versions. - -To only run a specific test or class of tests, add `ONLY_TESTING=test/MLNNameOfTestClass/testNameOfTest`. - -To skip a specific test or class of tests, add `SKIP_TESTING=test/MLNNameOfTestClass/testNameOfTest`. - -To run the cross-platform tests in Xcode instead of on the command line: - -1. Run `make iproj` to set up the workspace. -2. Change the scheme to “test (platform project)” and press Command-R (⌘-R) to run core unit tests. -3. Change the scheme to “CI” and press Command-U (⌘-U) to run SDK integration tests. - -### Testing from the command line - -```bash -# Change Directory -cd platform/ios/platform/ios - -# Test Scheme CI -xcodebuild test -scheme CI \ - -destination 'platform=iOS Simulator,OS=14.5,name=iPhone SE (2nd generation)' - -# Test Scheme with Test Plan over OS versions -xcodebuild test -scheme CI -testPlan CI-Expressions \ - -destination 'platform=iOS Simulator,OS=14.5,name=iPhone SE (2nd generation)' - -xcodebuild test -scheme CI -testPlan CI-Expressions \ - -destination 'platform=iOS Simulator,OS=15.4,name=iPhone SE (3rd generation)' - -xcodebuild test -scheme CI -testPlan CI-Expressions \ - -destination 'platform=iOS Simulator,OS=15.5,name=iPhone SE (3rd generation)' -``` - -## Access tokens - -> **Warning** -> This section is outdated. - -The included applications use Mapbox vector tiles, which require a Mapbox account and API access token. Obtain an access token on the [Mapbox account page](https://www.mapbox.com/studio/account/tokens/). - -Before running the demo ("`iosapp`") or benchmarking ("`bench`") applications, first create a new text file called `.mapbox` or `mapbox` in your home directory containing your access token. The access token will then be automatically inserted into the application's Info.plist at runtime. - -## Using iosapp - -- Pan to move -- Pinch to zoom -- Use two fingers to rotate -- Double-tap to zoom in one level -- Two-finger single-tap to zoom out one level -- Double-tap, long-pressing the second, then pan up and down to "quick zoom" (meant for one-handed use) -- Use the debug menu to add test annotations, reset position, and cycle through the debug options. - -## Simulator - -You can run automated test on a Simulator or Device by changing to the Scheme `iosapp` and choosing `Product` > `Test` (or use `⌘-U`). Use `⌘-9` to navigate to `Reports` to see results and browse through screenshots. This method of testing should work well with CI tools such as GitHub Actions, Xcode Server Bots, & AWS Device Farm. diff --git a/platform/ios/platform/ios/INSTALL.md b/platform/ios/platform/ios/INSTALL.md deleted file mode 100644 index e86cdb977..000000000 --- a/platform/ios/platform/ios/INSTALL.md +++ /dev/null @@ -1,237 +0,0 @@ -# Integrating custom builds of the Mapbox Maps SDK for iOS into your application - -This document explains how to build a development version of Mapbox Maps SDK for iOS for use in your own Cocoa Touch application. To use a production-ready version of the SDK, see the [Mapbox Maps SDK for iOS installation page](https://www.mapbox.com/install/ios/). - -### Requirements - -The Mapbox Maps SDK for iOS is intended to run on iOS 9.0 and above on the following devices: - -* iPhone 4s and above (5, 5c, 5s, 6, 6 Plus, 7, 7 Plus, 8, 8 Plus, X) -* iPad 2 and above (3, 4, Mini, Air, Mini 2, Air 2, Pro) -* iPod touch 5th generation and above - - -Note that debugging in 32-bit simulators (such as the iPhone 5 or iPad 2) is only partially supported. - -The Mapbox Maps SDK for iOS requires: - -* Xcode 9.1 or higher to compile from source -* Xcode 8.0 or higher to integrate the compiled framework into an application - -Before building, follow these steps to install prerequisites: - -1. Install [Xcode](https://developer.apple.com/xcode/) -1. Launch Xcode and install any updates -1. Install [Homebrew](http://brew.sh) -1. Install additional dependencies. - ```bash - brew install node cmake ccache pkg-config glfw cmake-docs - ``` - -1. Install [xcpretty](https://github.com/supermarin/xcpretty) for prettifying command line builds. (optional): - ``` - sudo gem install xcpretty - ``` -1. Install [jazzy](https://github.com/realm/jazzy) for generating API documentation (optional): - ``` - sudo gem install jazzy - ``` - -### Build the iOS Demo App - -``` -git clone --recurse-submodules git@github.com:maplibre/maplibre-native.git -cd maplibre-native/platform/ios -make iproj -``` - -Xcode should automatically open, and you can then build the Demo App (iosapp). - -![iosapp](https://user-images.githubusercontent.com/556367/214957991-7ddb56b1-937e-4a15-a03c-36f355677cf6.png) - -If you wish to deploy on attached hardware, you need to setup your Apple Developer account and select it in the *Signing and Capabilities* menu. - -![Team](https://user-images.githubusercontent.com/556367/214957613-2d565b1a-6590-495e-8979-2022096e02f1.png) - -### Building the SDK - -1. Clone the git repository: - ```bash - git clone --recurse-submodules https://github.com/maplibre/maplibre-native.git - cd maplibre-native - ``` - Note that you must check out the project's git submodules to build. If you did not include `--recurse-submodules` in the clone, you can later run `git submodule update --init`. -1. Run `make iframework BUILDTYPE=Release`. The packaging script will produce a `build/ios/pkg/` folder containing: - - a `dynamic` folder containing a dynamically-linked fat framework with debug symbols for devices and the iOS Simulator - - a `documentation` folder with HTML API documentation - - an example `Settings.bundle` containing an optional Mapbox Telemetry opt-out setting - -See the [packaging documentation](DEVELOPING.md#packaging-builds) for other build options. - -### Installation - -There are several ways to install custom builds of the Mapbox Maps SDK for iOS: - -#### Dynamic framework - -This is the recommended workflow for manually integrating custom builds of the SDK into an application: - -1. Build from source manually, per above. - -1. Open the project editor, select your application target, then go to the General tab. Drag Mapbox.framework from the `build/ios/pkg/dynamic/` directory into the “Embedded Binaries” section. (Don’t drag it into the “Linked Frameworks and Libraries” section; Xcode will add it there automatically.) In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish. - -1. In the Build Phases tab, click the + button at the top and select “New Run Script Phase”. Enter the following code into the script text field: - -```bash -bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Mapbox.framework/strip-frameworks.sh" -``` - -(The last step, courtesy of [Realm](https://github.com/realm/realm-cocoa/), is required for working around an [iOS App Store bug](http://www.openradar.me/radar?id=6409498411401216) when archiving universal binaries.) - -##### Snapshot builds - -A snapshot build of the dynamic framework, based on the latest commit to the master branch, is available for download [here](https://mapbox.s3.amazonaws.com/mapbox-gl-native/ios/builds/mapbox-ios-sdk-snapshot-dynamic.zip). - -#### Static framework - -You can alternatively install the SDK as a static framework: - -1. Build from source using the `make iframework FORMAT=static BUILDTYPE=Release` command. - -1. Drag the Mapbox.bundle and Mapbox.framework from the `build/ios/pkg/static/` directory into the Project navigator. In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish. Open the project editor and select your application target to verify that the following changes occurred automatically: - - - In the General tab, Mapbox.framework is listed in the “Linked Frameworks and Libraries” section. - - In the Build Settings tab, the “Framework Search Paths” (`FRAMEWORK_SEARCH_PATHS`) build setting includes the directory that contains Mapbox.framework. For most projects, the default value of `$(inherited) $(PROJECT_DIR)` should be sufficient. - - In the Build Phases tab, Mapbox.bundle is listed in the “Copy Bundle Resources” build phase. - -1. Back in the General tab, add the following Cocoa Touch frameworks and libraries to the “Linked Frameworks and Libraries” section: - - - GLKit.framework - - ImageIO.framework - - MobileCoreServices.framework - - QuartzCore.framework - - SystemConfiguration.framework - - libc++.tbd - - libsqlite3.tbd - - libz.tbd - -1. In the Build Settings tab, find the Other Linker Flags setting and add `-ObjC`. - -#### CocoaPods - -For instructions on installing stable release versions of the Mapbox Maps SDK for iOS with CocoaPods, see [our website](https://www.mapbox.com/install/ios/cocoapods/). - -As of v5.6.0, you must specify `use_frameworks!` in your Podfile. - -##### Testing pre-releases with CocoaPods - -To test pre-releases of the dynamic framework, directly specify the version in your `Podfile`: - -```rb -pod 'Mapbox-iOS-SDK', '~> x.x.x-alpha.1' -``` - -##### Testing snapshot releases with CocoaPods - -To test a snapshot dynamic framework build, update your app’s `Podfile` to point to: - -```rb -pod 'Mapbox-iOS-SDK-snapshot-dynamic', podspec: 'https://raw.githubusercontent.com/mapbox/mapbox-gl-native-ios/master/platform/ios/Mapbox-iOS-SDK-snapshot-dynamic.podspec' -``` - -##### Using your own build with CocoaPods - -1. Build from source manually, per above. - -1. Edit [`Mapbox-iOS-SDK.podspec`](./Mapbox-iOS-SDK.podspec) to point to the local build output: - - ```diff - m.source = { - - :http => "https://mapbox.s3.amazonaws.com/mapbox-gl-native/ios/builds/mapbox-ios-sdk-#{m.version.to_s}-dynamic.zip", - + :path => "../../build/ios/pkg/dynamic/", - :flatten => true - } - ``` - -1. Update your app’s `Podfile` to point to the edited `Mapbox-iOS-SDK.podspec`. - - ```rb - pod 'Mapbox-iOS-SDK', :path => '{...}/platform/ios/Mapbox-iOS-SDK.podspec' - ``` - -1. Run `pod update` to grab the newly-built library. - -If using the static framework, add `$(inherited)` to your target’s Other Linker Flags in the Build Settings tab. - -##### Using pre-stripped releases with CocoaPods - -If you choose to commit the contents of your `Pods` directory to source control and are encountering file size limitations, you may wish to use builds that have been pre-stripped of debug symbols. We publish these to [our public podspecs repository](https://github.com/mapbox/pod-specs/), which should be added as an additional `source` in your app’s `Podfile`. - -```rb -source 'https://github.com/mapbox/pod-specs.git' - -pod 'Mapbox-iOS-SDK-stripped', '~> x.x.x' -``` - -Note that these builds lack some debugging information, which could make development more difficult and result in less useful crash reports. Though initially smaller on disk, using these builds has no effect on the ultimate size of your application — see our [Understanding iOS Framework Size guide](https://www.mapbox.com/help/ios-framework-size/) for more information. - -#### Carthage - -For instructions on installing stable release versions of the Mapbox Maps SDK for iOS with Carthage, see [our website](https://www.mapbox.com/install/ios/carthage/). - -Please note that as of ios-v5.6.0-alpha.2, `--no-use-binaries` has no affect on projects built with the Mapbox framework. - -##### Testing pre-releases with Carthage - -To test pre-releases of the dynamic framework, directly specify the version in your Cartfile: - -```json -binary "https://www.mapbox.com/ios-sdk/Mapbox-iOS-SDK.json" ~> x.x.x-alpha.1 -github "mapbox/mapbox-events-ios" == x.x.x -``` - -Where `x.x.x` is the latest version of the [Mapbox Mobile Events](https://github.com/mapbox/mapbox-events-ios) library. - -##### Testing snapshot releases with Carthage - -This project does not currently support using snapshot releases via Carthage. - -##### Using your own build with Carthage - -This project does not support being compiled as a local repository by Carthage. - -##### Using pre-stripped releases with Carthage - -If you require a build with debug symbols pre-stripped, use [this feed URL](https://www.mapbox.com/ios-sdk/Mapbox-iOS-SDK-stripped.json) with Carthage. - -### Configuration - -1. Some vector tiles servers require a API key. In the project editor, select the application target, then go to the Info tab. Under the “Custom iOS Target Properties” section, set `MLNApiKey` to your api key.. - -### Usage - -In a storyboard or XIB, add a view to your view controller. (Drag View from the Object library to the View Controller scene on the Interface Builder canvas.) In the Identity inspector, set the view’s custom class to `MLNMapView`. If you need to manipulate the map view programmatically: - -1. Switch to the Assistant Editor. -1. Import the `Mapbox` module. -1. Connect the map view to a new outlet in your view controller class. (Control-drag from the map view in Interface Builder to a valid location in your view controller implementation.) The resulting outlet declaration should look something like this: - -```objc -// ViewController.m -@import Mapbox; - -@interface ViewController : UIViewController - -@property (strong) IBOutlet MLNMapView *mapView; - -@end -``` - -```swift -// ViewController.swift -import Mapbox - -class ViewController: UIViewController { - @IBOutlet var mapView: MLNMapView! -} -``` diff --git a/platform/ios/platform/ios/README.md b/platform/ios/platform/ios/README.md deleted file mode 100644 index 3d48afd73..000000000 --- a/platform/ios/platform/ios/README.md +++ /dev/null @@ -1,166 +0,0 @@ -# MapLibre Native for iOS - -[![GitHub Action build status](https://github.com/maplibre/maplibre-native/workflows/ios-ci/badge.svg)](https://github.com/maplibre/maplibre-native/actions/workflows/ios-ci.yml) [![GitHub Action build status](https://github.com/maplibre/maplibre-native/workflows/ios-release/badge.svg)](https://github.com/maplibre/maplibre-native/actions/workflows/ios-release.yml) - -A library based on [MapLibre Native](https://github.com/maplibre/maplibre-native) for embedding interactive map views with scalable, customizable vector maps into iOS Applications. - -## Getting Started - -MapLibre Native for iOS is distributed using the [Swift Package Index](https://swiftpackageindex.com/maplibre/maplibre-gl-native-distribution). To add it to your project, follow the steps below. - -1. To add a package dependency to your Xcode project, select File > Swift Packages > Add Package Dependency and enter its repository URL. You can also navigate to your target’s General pane, and in the “Frameworks, Libraries, and Embedded Content” section, click the + button, select Add Other, and choose Add Package Dependency. - -2. Either add MapLibre GitHub distribution URL `https://github.com/maplibre/maplibre-gl-native-distribution` or search for `maplibre-native` package. - -3. Choose "Next". Xcode should clone the distribution repository and download the binaries. - -4. To create a minimal app, update `ContentView.swift` (which should have been automatically created when you initalized the new XCode project) with the following contents: - -```swift -import SwiftUI -import Mapbox - -struct ContentView: View { - var body: some View { - MapView().edgesIgnoringSafeArea(.all) - } -} - -struct ContentView_Previews: PreviewProvider { - static var previews: some View { - ContentView() - } -} - -struct MapView: UIViewRepresentable { - func makeUIView(context: Context) -> MGLMapView { - // Build the style URL - let styleURL = URL(string: "https://demotiles.maplibre.org/style.json") - - // Create the map view - let mapView = MGLMapView(frame: .zero, styleURL: styleURL) - - mapView.logoView.isHidden = true - - mapView.setCenter( - CLLocationCoordinate2D( - latitude: 23.16, longitude: -109.50), animated: false) - - mapView.setZoomLevel(4, animated: false) - return mapView - - } - - func updateUIView(_ mapView: MGLMapView, context: Context) { - // Update the view if needed - } -} -``` - -There is a an open bounty to extend this Getting Started guide ([#809](https://github.com/maplibre/maplibre-native/issues/809)). In the meantime, refer to one of these external guides: - -- [Get Started with MapLibre Native for iOS using SwiftUI](https://docs.maptiler.com/maplibre-gl-native-ios/ios-swiftui-basic-get-started/) -- [Get Started With MapLibre Native for iOS using UIKit](https://docs.maptiler.com/maplibre-gl-native-ios/ios-uikit-basic-get-started/) - -## Developing - -The following are instructions on how to build MapLibre Native for development purposes. - -### Downloading Source - -Download the source and install all submodules if you have not already, by running the following from the root of the repository. - -``` -git clone --recurse-submodules git@github.com:maplibre/maplibre-native.git -cd maplibre-native -``` - -Next run the following to generate some files that are needed: - -``` -cd platform/ios -make style-code -``` - - -### Bazel - -[Bazel](https://bazel.build/) together with [rules_xcodeproj](https://github.com/MobileNativeFoundation/rules_xcodeproj) is the preferred build system. Please [share your experiences](https://github.com/maplibre/maplibre-native/discussions/1145). - -You need to install bazelisk, which is a wrapper around Bazel which ensures that the version specified in `.bazelversion` is used. - -``` -brew install bazelisk -``` - -#### Creating `config.bzl` - -You need to configure Bazel. Copy the example config from `platform/ios`. - -``` -cp bazel/example_config.bzl bazel/config.bzl -``` - -You need to set your `BUNDLE_ID_PREFIX` to be unique (ideally use a domain that you own in reverse domain name notation). - -``` -APPLE_MOBILE_PROVISIONING_PROFILE_TEAM_ID = "FFNX6834U8" -APPLE_MOBILE_PROVISIONING_PROFILE_NAME = "iOS Team Provisioning Profile: *" -BUNDLE_ID_PREFIX = "com.firstnamelastname" -``` - -You can keep leave the `APPLE_MOBILE_PROVISIONING_PROFILE_NAME` alone. - -Set the Team ID to the Team ID of your Apple Developer Account (paid or unpaid both work). If you do not know your Team ID, enter the following command in the terminal: - -``` -cd ~/Library/MobileDevice/Provisioning\ Profiles && open . -``` - -Then select one of the profiles and click spacebar. Your Team ID is the string between parentheses in the value of "Team". - -If there are no provisioning profiles available, continue this guide and let Xcode generate a provisioning profile for you. You will need to update the Team ID after this happened. - -#### Create the Xcode Project - -_These instructions are for XCode 14.3.1_ - -From `platform/ios`: - -``` -bazel run xcodeproj -xed MapLibre.xcodeproj -``` - -Then once in Xcode, click on "MapLibre" on the left, then "App" under Targets, then "Signing & Capabilities" in the tabbed menu. -Confirm that no errors are shown: - -image - -Try to run the example App in the simulator and on a device to confirm your setup works. - -#### Using Bazel from the Command Line - -It is also possible to build and run the test application in a simulator from the command line without opening Xcode. - -``` -bazel run //platform/ios:App - -# run the iOS tests -bazel test //platform/ios/platform/ios/test:ios_test --test_output=errors -``` - -### CMake (deprecated) - -The original build tool generator supported by MapLibre Native is CMake. There is a `Makefile` which calls CMake and `xcodebuild` under the hood to complete various development tasks, including building with various kinds of configurations and running tests. This `Makefile` can also can set up an Xcode project for MapLibre Native development by copying a `.xcodeproj` file part of the source tree and combining that with the output of CMake. - -To set up an Xcode project and open Xcode, use the following command from `platform/ios`: - -``` -make iproj -``` - - -## Documentation - -- [MapLibre Native for iOS API Reference](https://maplibre.org/maplibre-native/ios/api/) diff --git a/platform/ios/platform/ios/WorkspaceSettings.xcsettings b/platform/ios/platform/ios/WorkspaceSettings.xcsettings deleted file mode 100644 index 20a7accf0..000000000 --- a/platform/ios/platform/ios/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,22 +0,0 @@ - - - - - BuildLocationStyle - CustomLocation - CustomBuildIntermediatesPath - ../../build/ios - CustomBuildLocationType - RelativeToWorkspace - CustomBuildProductsPath - ../../build/ios - DerivedDataCustomLocation - ../../build/ios - DerivedDataLocationStyle - WorkspaceRelativePath - IssueFilterStyle - ShowActiveSchemeOnly - LiveSourceIssuesEnabled - - - diff --git a/platform/ios/platform/ios/config.cmake b/platform/ios/platform/ios/config.cmake deleted file mode 100644 index 6af32b3b1..000000000 --- a/platform/ios/platform/ios/config.cmake +++ /dev/null @@ -1,51 +0,0 @@ -macro(initialize_ios_target target) - set_xcode_property(${target} IPHONEOS_DEPLOYMENT_TARGET "9.0") - set_xcode_property(${target} ENABLE_BITCODE "YES") - set_xcode_property(${target} BITCODE_GENERATION_MODE bitcode) - set_xcode_property(${target} ONLY_ACTIVE_ARCH $<$:YES>) - - target_compile_options(${target} - PRIVATE -fobjc-arc - ) -endmacro() - - -include(cmake/loop-darwin.cmake) -initialize_ios_target(mbgl-vendor-icu) -initialize_ios_target(mbgl-loop-darwin) - - -macro(mbgl_platform_core) - initialize_ios_target(mbgl-core) - - target_sources_from_file(mbgl-core PRIVATE platform/ios/core-files.json) - - target_include_directories(mbgl-core - PUBLIC platform/darwin/include - PUBLIC platform/default/include - ) - - target_link_libraries(mbgl-core - PUBLIC "-lz" - PUBLIC "-framework Foundation" - PUBLIC "-framework CoreText" - PUBLIC "-framework CoreGraphics" - PUBLIC "-framework OpenGLES" - PUBLIC "-framework ImageIO" - PUBLIC "-framework MobileCoreServices" - PUBLIC "-framework SystemConfiguration" - ) -endmacro() - - -macro(mbgl_filesource) - initialize_ios_target(mbgl-filesource) - - # Modify platform/darwin/filesource-files.json to change the source files for this target. - target_sources_from_file(mbgl-filesource PRIVATE platform/darwin/filesource-files.json) - - target_link_libraries(mbgl-filesource - PUBLIC "-lsqlite3" - PUBLIC "-framework Foundation" - ) -endmacro() diff --git a/platform/ios/platform/ios/ios.xcconfig b/platform/ios/platform/ios/ios.xcconfig deleted file mode 100644 index a660cb74c..000000000 --- a/platform/ios/platform/ios/ios.xcconfig +++ /dev/null @@ -1,6 +0,0 @@ -// Xcode Configuration Settings `.xcconfig` -// [Add a build configuration (xcconfig) file](https://help.apple.com/xcode/mac/11.4/index.html?localePath=en.lproj#/deve97bde215?sub=dev40b8becae) -// [Configuration Settings File (xcconfig) format](https://help.apple.com/xcode/mac/11.4/index.html?localePath=en.lproj#/dev745c5c974?sub=dev40b8becae) -// [Map a configuration settings file to a build configuration](https://help.apple.com/xcode/mac/11.4/index.html?localePath=en.lproj#/deve97bde215?sub=dev40b8becae) - -#include "../darwin/darwin.xcconfig" diff --git a/platform/ios/platform/ios/ios.xcodeproj/project.pbxproj b/platform/ios/platform/ios/ios.xcodeproj/project.pbxproj deleted file mode 100644 index 417e762d6..000000000 --- a/platform/ios/platform/ios/ios.xcodeproj/project.pbxproj +++ /dev/null @@ -1,5094 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 071BBAFF1EE7613E001FB02A /* MLNImageSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 071BBAFD1EE75CD4001FB02A /* MLNImageSource.mm */; }; - 071BBB001EE7613F001FB02A /* MLNImageSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 071BBAFD1EE75CD4001FB02A /* MLNImageSource.mm */; }; - 071BBB031EE76146001FB02A /* MLNImageSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 071BBAFC1EE75CD4001FB02A /* MLNImageSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 071BBB041EE76147001FB02A /* MLNImageSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 071BBAFC1EE75CD4001FB02A /* MLNImageSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 071BBB071EE77631001FB02A /* MLNImageSourceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 071BBB051EE7761A001FB02A /* MLNImageSourceTests.m */; }; - 075AF842227B6762008D7A4C /* MBXState.m in Sources */ = {isa = PBXBuildFile; fileRef = 075AF841227B6762008D7A4C /* MBXState.m */; }; - 075AF845227B67C6008D7A4C /* MBXStateManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 075AF844227B67C6008D7A4C /* MBXStateManager.m */; }; - 076171C32139C70900668A35 /* MLNMapViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 076171C22139C70900668A35 /* MLNMapViewTests.m */; }; - 076171C72141A91700668A35 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 076171C62141A91700668A35 /* Settings.bundle */; }; - 077061DA215DA00E000FEF62 /* MLNTestLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 077061D9215DA00E000FEF62 /* MLNTestLocationManager.m */; }; - 0778DD431F67556700A73B34 /* MLNComputedShapeSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 0778DD401F67555F00A73B34 /* MLNComputedShapeSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0778DD441F67556C00A73B34 /* MLNComputedShapeSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0778DD411F67555F00A73B34 /* MLNComputedShapeSource.mm */; }; - 07D8C6FB1F67560100381808 /* MLNComputedShapeSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0778DD411F67555F00A73B34 /* MLNComputedShapeSource.mm */; }; - 07D8C6FF1F67562C00381808 /* MLNComputedShapeSourceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 07D8C6FD1F67562800381808 /* MLNComputedShapeSourceTests.m */; }; - 07D947531F67488E00E37934 /* MLNComputedShapeSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D9474E1F67487E00E37934 /* MLNComputedShapeSource_Private.h */; }; - 16376B0A1FFD9DAF0000563E /* MBGLIntegrationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 16376B091FFD9DAF0000563E /* MBGLIntegrationTests.mm */; }; - 16376B331FFDB4B40000563E /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 16376B321FFDB4B40000563E /* AppDelegate.m */; }; - 16376B3B1FFDB4B40000563E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 16376B3A1FFDB4B40000563E /* Assets.xcassets */; }; - 16376B3E1FFDB4B40000563E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 16376B3C1FFDB4B40000563E /* LaunchScreen.storyboard */; }; - 16376B411FFDB4B40000563E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 16376B401FFDB4B40000563E /* main.m */; }; - 16376B471FFDB92B0000563E /* one-liner.json in Resources */ = {isa = PBXBuildFile; fileRef = DA35D0871E1A6309007DED41 /* one-liner.json */; }; - 16376B491FFEED010000563E /* MLNMapViewLayoutTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 16376B481FFEED010000563E /* MLNMapViewLayoutTests.m */; }; - 170C437C2029D96F00863DF0 /* MLNHeatmapColorTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 170C43782028D49800863DF0 /* MLNHeatmapColorTests.mm */; }; - 170C437D2029D97900863DF0 /* MLNHeatmapStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 170C43792028D49800863DF0 /* MLNHeatmapStyleLayerTests.mm */; }; - 1753ED421E53CE6F00A9FD90 /* MLNConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 1753ED411E53CE6F00A9FD90 /* MLNConversion.h */; }; - 1753ED431E53CE6F00A9FD90 /* MLNConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 1753ED411E53CE6F00A9FD90 /* MLNConversion.h */; }; - 1F0196AA23174B0700F5C819 /* MLNMapViewContentInsetTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F0196A923174B0700F5C819 /* MLNMapViewContentInsetTests.m */; }; - 1F06668A1EC64F8E001C16D7 /* MLNLight.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F0666881EC64F8E001C16D7 /* MLNLight.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1F06668D1EC64F8E001C16D7 /* MLNLight.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F0666891EC64F8E001C16D7 /* MLNLight.mm */; }; - 1F26B6C120E189C9007BCC21 /* MBXCustomLocationViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F26B6C020E189C9007BCC21 /* MBXCustomLocationViewController.m */; }; - 1F26B6C320E1A351007BCC21 /* simple_route.json in Resources */ = {isa = PBXBuildFile; fileRef = 1F26B6C220E1A351007BCC21 /* simple_route.json */; }; - 1F2B94C0221636D900210640 /* MLNNetworkConfiguration_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F2B94BF221636D800210640 /* MLNNetworkConfiguration_Private.h */; }; - 1F2B94C1221636D900210640 /* MLNNetworkConfiguration_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F2B94BF221636D800210640 /* MLNNetworkConfiguration_Private.h */; }; - 1F6A82A221360F9D00BA5B41 /* MLNLoggingConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F6A82A021360F9C00BA5B41 /* MLNLoggingConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1F6A82A321360F9D00BA5B41 /* MLNLoggingConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F6A82A021360F9C00BA5B41 /* MLNLoggingConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1F6A82A82138871900BA5B41 /* MLNLoggingConfiguration_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F6A82A62138871900BA5B41 /* MLNLoggingConfiguration_Private.h */; }; - 1F6A82A92138871900BA5B41 /* MLNLoggingConfiguration_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F6A82A62138871900BA5B41 /* MLNLoggingConfiguration_Private.h */; }; - 1F7454921ECBB42C00021D39 /* MLNLight.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F0666891EC64F8E001C16D7 /* MLNLight.mm */; }; - 1F7454931ECBB43F00021D39 /* MLNLight.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F0666881EC64F8E001C16D7 /* MLNLight.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1F7454961ECD450D00021D39 /* MLNLight_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F7454941ECD450D00021D39 /* MLNLight_Private.h */; }; - 1F7454971ECD450D00021D39 /* MLNLight_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F7454941ECD450D00021D39 /* MLNLight_Private.h */; }; - 1F7454A91ED08AB400021D39 /* MLNLightTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F7454A61ED08AB400021D39 /* MLNLightTest.mm */; }; - 1F78399E235AA1E600D4D606 /* libmbgl-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F78399D235AA1E600D4D606 /* libmbgl-core.a */; }; - 1F7839A6235E137000D4D606 /* sideload_sat.db in Resources */ = {isa = PBXBuildFile; fileRef = 1F7839A5235E137000D4D606 /* sideload_sat.db */; }; - 1F8E8A81233A9FD9009B51ED /* MLNMapViewGestureRecognizerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F8E8A80233A9FD9009B51ED /* MLNMapViewGestureRecognizerTests.mm */; }; - 1F95931D1E6DE2E900D5B294 /* MLNNSDateAdditionsTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F95931C1E6DE2E900D5B294 /* MLNNSDateAdditionsTests.mm */; }; - 1FC4817D2098CBC0000D09B4 /* NSPredicate+MLNPrivateAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FC4817B2098CBC0000D09B4 /* NSPredicate+MLNPrivateAdditions.h */; }; - 1FC4817F2098CD80000D09B4 /* NSPredicate+MLNPrivateAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FC4817B2098CBC0000D09B4 /* NSPredicate+MLNPrivateAdditions.h */; }; - 1FCAE2A220B872A400C577DD /* MLNLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCAE2A020B872A400C577DD /* MLNLocationManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1FCAE2A320B872A400C577DD /* MLNLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCAE2A020B872A400C577DD /* MLNLocationManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1FCAE2A420B872A400C577DD /* MLNLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FCAE2A120B872A400C577DD /* MLNLocationManager.m */; }; - 1FCAE2A520B872A400C577DD /* MLNLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FCAE2A120B872A400C577DD /* MLNLocationManager.m */; }; - 1FCAE2A820B88B3800C577DD /* MLNLocationManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCAE2A620B88B3800C577DD /* MLNLocationManager_Private.h */; }; - 1FCAE2A920B88B3800C577DD /* MLNLocationManager_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCAE2A620B88B3800C577DD /* MLNLocationManager_Private.h */; }; - 1FF48587223710BE00F19727 /* MLNAttributedExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FF48585223710BE00F19727 /* MLNAttributedExpression.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1FF48588223710BE00F19727 /* MLNAttributedExpression.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FF48585223710BE00F19727 /* MLNAttributedExpression.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1FF48589223710BE00F19727 /* MLNAttributedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FF48586223710BE00F19727 /* MLNAttributedExpression.m */; }; - 1FF4858A223710BE00F19727 /* MLNAttributedExpression.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FF48586223710BE00F19727 /* MLNAttributedExpression.m */; }; - 30E578171DAA85520050F07E /* UIImage+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 30E578111DAA7D690050F07E /* UIImage+MLNAdditions.h */; }; - 30E578181DAA85520050F07E /* UIImage+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 30E578111DAA7D690050F07E /* UIImage+MLNAdditions.h */; }; - 30E578191DAA855E0050F07E /* UIImage+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 30E578121DAA7D690050F07E /* UIImage+MLNAdditions.mm */; }; - 30E5781A1DAA855E0050F07E /* UIImage+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 30E578121DAA7D690050F07E /* UIImage+MLNAdditions.mm */; }; - 350098BB1D480108004B2AF0 /* MLNVectorTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 350098B91D480108004B2AF0 /* MLNVectorTileSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 350098BC1D480108004B2AF0 /* MLNVectorTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 350098B91D480108004B2AF0 /* MLNVectorTileSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 350098BD1D480108004B2AF0 /* MLNVectorTileSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 350098BA1D480108004B2AF0 /* MLNVectorTileSource.mm */; }; - 350098BE1D480108004B2AF0 /* MLNVectorTileSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 350098BA1D480108004B2AF0 /* MLNVectorTileSource.mm */; }; - 350098DC1D484E60004B2AF0 /* NSValue+MLNStyleAttributeAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 350098DA1D484E60004B2AF0 /* NSValue+MLNStyleAttributeAdditions.h */; }; - 350098DD1D484E60004B2AF0 /* NSValue+MLNStyleAttributeAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 350098DA1D484E60004B2AF0 /* NSValue+MLNStyleAttributeAdditions.h */; }; - 350098DE1D484E60004B2AF0 /* NSValue+MLNStyleAttributeAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 350098DB1D484E60004B2AF0 /* NSValue+MLNStyleAttributeAdditions.mm */; }; - 350098DF1D484E60004B2AF0 /* NSValue+MLNStyleAttributeAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 350098DB1D484E60004B2AF0 /* NSValue+MLNStyleAttributeAdditions.mm */; }; - 3510FFEA1D6D9C7A00F413B2 /* NSComparisonPredicate+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3510FFE81D6D9C7A00F413B2 /* NSComparisonPredicate+MLNAdditions.h */; }; - 3510FFEB1D6D9C7A00F413B2 /* NSComparisonPredicate+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3510FFE81D6D9C7A00F413B2 /* NSComparisonPredicate+MLNAdditions.h */; }; - 3510FFEC1D6D9C7A00F413B2 /* NSComparisonPredicate+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3510FFE91D6D9C7A00F413B2 /* NSComparisonPredicate+MLNAdditions.mm */; }; - 3510FFED1D6D9C7A00F413B2 /* NSComparisonPredicate+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3510FFE91D6D9C7A00F413B2 /* NSComparisonPredicate+MLNAdditions.mm */; }; - 3510FFF01D6D9D8C00F413B2 /* NSExpression+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3510FFEE1D6D9D8C00F413B2 /* NSExpression+MLNAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3510FFF21D6D9D8C00F413B2 /* NSExpression+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3510FFEF1D6D9D8C00F413B2 /* NSExpression+MLNAdditions.mm */; }; - 3510FFF31D6D9D8C00F413B2 /* NSExpression+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3510FFEF1D6D9D8C00F413B2 /* NSExpression+MLNAdditions.mm */; }; - 3510FFF91D6DCC4700F413B2 /* NSCompoundPredicate+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3510FFF71D6DCC4700F413B2 /* NSCompoundPredicate+MLNAdditions.h */; }; - 3510FFFA1D6DCC4700F413B2 /* NSCompoundPredicate+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3510FFF71D6DCC4700F413B2 /* NSCompoundPredicate+MLNAdditions.h */; }; - 3510FFFB1D6DCC4700F413B2 /* NSCompoundPredicate+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3510FFF81D6DCC4700F413B2 /* NSCompoundPredicate+MLNAdditions.mm */; }; - 3510FFFC1D6DCC4700F413B2 /* NSCompoundPredicate+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3510FFF81D6DCC4700F413B2 /* NSCompoundPredicate+MLNAdditions.mm */; }; - 35136D391D42271A00C20EFD /* MLNBackgroundStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D381D42271A00C20EFD /* MLNBackgroundStyleLayer.mm */; }; - 35136D3A1D42271A00C20EFD /* MLNBackgroundStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D381D42271A00C20EFD /* MLNBackgroundStyleLayer.mm */; }; - 35136D3C1D42272500C20EFD /* MLNCircleStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D3B1D42272500C20EFD /* MLNCircleStyleLayer.mm */; }; - 35136D3D1D42272500C20EFD /* MLNCircleStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D3B1D42272500C20EFD /* MLNCircleStyleLayer.mm */; }; - 35136D3F1D42273000C20EFD /* MLNLineStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D3E1D42273000C20EFD /* MLNLineStyleLayer.mm */; }; - 35136D401D42273000C20EFD /* MLNLineStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D3E1D42273000C20EFD /* MLNLineStyleLayer.mm */; }; - 35136D421D42274500C20EFD /* MLNRasterStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D411D42274500C20EFD /* MLNRasterStyleLayer.mm */; }; - 35136D431D42274500C20EFD /* MLNRasterStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D411D42274500C20EFD /* MLNRasterStyleLayer.mm */; }; - 35136D451D42275100C20EFD /* MLNSymbolStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D441D42275100C20EFD /* MLNSymbolStyleLayer.mm */; }; - 35136D461D42275100C20EFD /* MLNSymbolStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D441D42275100C20EFD /* MLNSymbolStyleLayer.mm */; }; - 35136D4C1D4277FC00C20EFD /* MLNSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 35136D4A1D4277FC00C20EFD /* MLNSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35136D4D1D4277FC00C20EFD /* MLNSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 35136D4A1D4277FC00C20EFD /* MLNSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35136D4E1D4277FC00C20EFD /* MLNSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D4B1D4277FC00C20EFD /* MLNSource.mm */; }; - 35136D4F1D4277FC00C20EFD /* MLNSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35136D4B1D4277FC00C20EFD /* MLNSource.mm */; }; - 3538AA1D1D542239008EC33D /* MLNForegroundStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3538AA1B1D542239008EC33D /* MLNForegroundStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3538AA1E1D542239008EC33D /* MLNForegroundStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3538AA1B1D542239008EC33D /* MLNForegroundStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3538AA1F1D542239008EC33D /* MLNForegroundStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3538AA1C1D542239008EC33D /* MLNForegroundStyleLayer.mm */; }; - 3538AA201D542239008EC33D /* MLNForegroundStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3538AA1C1D542239008EC33D /* MLNForegroundStyleLayer.mm */; }; - 353933F21D3FB753003F57D7 /* MLNCircleStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933F11D3FB753003F57D7 /* MLNCircleStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 353933F31D3FB753003F57D7 /* MLNCircleStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933F11D3FB753003F57D7 /* MLNCircleStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 353933F51D3FB785003F57D7 /* MLNBackgroundStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933F41D3FB785003F57D7 /* MLNBackgroundStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 353933F61D3FB785003F57D7 /* MLNBackgroundStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933F41D3FB785003F57D7 /* MLNBackgroundStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 353933F81D3FB79F003F57D7 /* MLNLineStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933F71D3FB79F003F57D7 /* MLNLineStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 353933F91D3FB79F003F57D7 /* MLNLineStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933F71D3FB79F003F57D7 /* MLNLineStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 353933FB1D3FB7C0003F57D7 /* MLNRasterStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933FA1D3FB7C0003F57D7 /* MLNRasterStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 353933FC1D3FB7C0003F57D7 /* MLNRasterStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933FA1D3FB7C0003F57D7 /* MLNRasterStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 353933FE1D3FB7DD003F57D7 /* MLNSymbolStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933FD1D3FB7DD003F57D7 /* MLNSymbolStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 353933FF1D3FB7DD003F57D7 /* MLNSymbolStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 353933FD1D3FB7DD003F57D7 /* MLNSymbolStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 353AFA141D65AB17005A69F4 /* NSDate+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 353AFA121D65AB17005A69F4 /* NSDate+MLNAdditions.h */; }; - 353AFA151D65AB17005A69F4 /* NSDate+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 353AFA121D65AB17005A69F4 /* NSDate+MLNAdditions.h */; }; - 353AFA161D65AB17005A69F4 /* NSDate+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 353AFA131D65AB17005A69F4 /* NSDate+MLNAdditions.mm */; }; - 353AFA171D65AB17005A69F4 /* NSDate+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 353AFA131D65AB17005A69F4 /* NSDate+MLNAdditions.mm */; }; - 353BAEF61D646370009A8DA9 /* amsterdam.geojson in Resources */ = {isa = PBXBuildFile; fileRef = 353BAEF51D646370009A8DA9 /* amsterdam.geojson */; }; - 353BAEF71D646370009A8DA9 /* amsterdam.geojson in Resources */ = {isa = PBXBuildFile; fileRef = 353BAEF51D646370009A8DA9 /* amsterdam.geojson */; }; - 353D23961D0B0DFE002BE09D /* MLNAnnotationViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 353D23951D0B0DFE002BE09D /* MLNAnnotationViewTests.m */; }; - 354B83961D2E873E005D9406 /* MLNUserLocationAnnotationView.h in Headers */ = {isa = PBXBuildFile; fileRef = 354B83941D2E873E005D9406 /* MLNUserLocationAnnotationView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 354B83971D2E873E005D9406 /* MLNUserLocationAnnotationView.h in Headers */ = {isa = PBXBuildFile; fileRef = 354B83941D2E873E005D9406 /* MLNUserLocationAnnotationView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 354B83981D2E873E005D9406 /* MLNUserLocationAnnotationView.m in Sources */ = {isa = PBXBuildFile; fileRef = 354B83951D2E873E005D9406 /* MLNUserLocationAnnotationView.m */; }; - 354B83991D2E873E005D9406 /* MLNUserLocationAnnotationView.m in Sources */ = {isa = PBXBuildFile; fileRef = 354B83951D2E873E005D9406 /* MLNUserLocationAnnotationView.m */; }; - 354B839C1D2E9B48005D9406 /* MBXUserLocationAnnotationView.m in Sources */ = {isa = PBXBuildFile; fileRef = 354B839B1D2E9B48005D9406 /* MBXUserLocationAnnotationView.m */; }; - 3557F7B01E1D27D300CCA5E6 /* MLNDistanceFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3557F7AE1E1D27D300CCA5E6 /* MLNDistanceFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3557F7B21E1D27D300CCA5E6 /* MLNDistanceFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3557F7AF1E1D27D300CCA5E6 /* MLNDistanceFormatter.m */; }; - 35599DED1D46F14E0048254D /* MLNStyleValue.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35599DEA1D46F14E0048254D /* MLNStyleValue.mm */; }; - 35599DEE1D46F14E0048254D /* MLNStyleValue.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35599DEA1D46F14E0048254D /* MLNStyleValue.mm */; }; - 355AE0011E9281DA00F3939D /* MLNScaleBar.mm in Sources */ = {isa = PBXBuildFile; fileRef = 355ADFFC1E9281DA00F3939D /* MLNScaleBar.mm */; }; - 355AE0021E9281DA00F3939D /* MLNScaleBar.mm in Sources */ = {isa = PBXBuildFile; fileRef = 355ADFFC1E9281DA00F3939D /* MLNScaleBar.mm */; }; - 3566C7661D4A77BA008152BC /* MLNShapeSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 3566C7641D4A77BA008152BC /* MLNShapeSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3566C7671D4A77BA008152BC /* MLNShapeSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 3566C7641D4A77BA008152BC /* MLNShapeSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3566C7681D4A77BA008152BC /* MLNShapeSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3566C7651D4A77BA008152BC /* MLNShapeSource.mm */; }; - 3566C7691D4A77BA008152BC /* MLNShapeSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3566C7651D4A77BA008152BC /* MLNShapeSource.mm */; }; - 3566C76C1D4A8DFA008152BC /* MLNRasterTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 3566C76A1D4A8DFA008152BC /* MLNRasterTileSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3566C76D1D4A8DFA008152BC /* MLNRasterTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 3566C76A1D4A8DFA008152BC /* MLNRasterTileSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3566C76E1D4A8DFA008152BC /* MLNRasterTileSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3566C76B1D4A8DFA008152BC /* MLNRasterTileSource.mm */; }; - 3566C76F1D4A8DFA008152BC /* MLNRasterTileSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3566C76B1D4A8DFA008152BC /* MLNRasterTileSource.mm */; }; - 3566C7711D4A9198008152BC /* MLNSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3566C7701D4A9198008152BC /* MLNSource_Private.h */; }; - 3566C7721D4A9198008152BC /* MLNSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3566C7701D4A9198008152BC /* MLNSource_Private.h */; }; - 357579801D501E09000B822E /* MLNFillStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3575797F1D501E09000B822E /* MLNFillStyleLayerTests.mm */; }; - 357579831D502AE6000B822E /* MLNRasterStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 357579821D502AE6000B822E /* MLNRasterStyleLayerTests.mm */; }; - 357579851D502AF5000B822E /* MLNSymbolStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 357579841D502AF5000B822E /* MLNSymbolStyleLayerTests.mm */; }; - 357579871D502AFE000B822E /* MLNLineStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 357579861D502AFE000B822E /* MLNLineStyleLayerTests.mm */; }; - 357579891D502B06000B822E /* MLNCircleStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 357579881D502B06000B822E /* MLNCircleStyleLayerTests.mm */; }; - 3575798B1D502B0C000B822E /* MLNBackgroundStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3575798A1D502B0C000B822E /* MLNBackgroundStyleLayerTests.mm */; }; - 357FE2DD1E02D2B20068B753 /* NSCoder+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 357FE2DB1E02D2B20068B753 /* NSCoder+MLNAdditions.h */; }; - 357FE2DE1E02D2B20068B753 /* NSCoder+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 357FE2DB1E02D2B20068B753 /* NSCoder+MLNAdditions.h */; }; - 357FE2DF1E02D2B20068B753 /* NSCoder+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 357FE2DC1E02D2B20068B753 /* NSCoder+MLNAdditions.mm */; }; - 357FE2E01E02D2B20068B753 /* NSCoder+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 357FE2DC1E02D2B20068B753 /* NSCoder+MLNAdditions.mm */; }; - 358B3DB92359E4A0007BEB26 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 358B3DB82359E491007BEB26 /* libsqlite3.tbd */; }; - 358B3DBB2359EA0F007BEB26 /* libmbgl-vendor-icu.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 358B3DBA2359EA0F007BEB26 /* libmbgl-vendor-icu.a */; }; - 3598544D1E1D38AA00B29F84 /* MLNDistanceFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 3598544C1E1D38AA00B29F84 /* MLNDistanceFormatterTests.m */; }; - 359F57461D2FDDA6005217F1 /* MLNUserLocationAnnotationView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 359F57451D2FDBD5005217F1 /* MLNUserLocationAnnotationView_Private.h */; }; - 35B82BF81D6C5F8400B1B721 /* NSPredicate+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35B82BF61D6C5F8400B1B721 /* NSPredicate+MLNAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35B82BF91D6C5F8400B1B721 /* NSPredicate+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35B82BF61D6C5F8400B1B721 /* NSPredicate+MLNAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35B82BFA1D6C5F8400B1B721 /* NSPredicate+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35B82BF71D6C5F8400B1B721 /* NSPredicate+MLNAdditions.mm */; }; - 35B82BFB1D6C5F8400B1B721 /* NSPredicate+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35B82BF71D6C5F8400B1B721 /* NSPredicate+MLNAdditions.mm */; }; - 35B8E08C1D6C8B5100E768D2 /* MLNPredicateTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35B8E08B1D6C8B5100E768D2 /* MLNPredicateTests.mm */; }; - 35CE61821D4165D9004F2359 /* UIColor+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35CE61801D4165D9004F2359 /* UIColor+MLNAdditions.h */; }; - 35CE61831D4165D9004F2359 /* UIColor+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35CE61801D4165D9004F2359 /* UIColor+MLNAdditions.h */; }; - 35CE61841D4165D9004F2359 /* UIColor+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35CE61811D4165D9004F2359 /* UIColor+MLNAdditions.mm */; }; - 35CE61851D4165D9004F2359 /* UIColor+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35CE61811D4165D9004F2359 /* UIColor+MLNAdditions.mm */; }; - 35D13AB71D3D15E300AFB4E0 /* MLNStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D13AB51D3D15E300AFB4E0 /* MLNStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35D13AB81D3D15E300AFB4E0 /* MLNStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D13AB51D3D15E300AFB4E0 /* MLNStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35D13AB91D3D15E300AFB4E0 /* MLNStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35D13AB61D3D15E300AFB4E0 /* MLNStyleLayer.mm */; }; - 35D13ABA1D3D15E300AFB4E0 /* MLNStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35D13AB61D3D15E300AFB4E0 /* MLNStyleLayer.mm */; }; - 35D13AC31D3D19DD00AFB4E0 /* MLNFillStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D13AC11D3D19DD00AFB4E0 /* MLNFillStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35D13AC41D3D19DD00AFB4E0 /* MLNFillStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D13AC11D3D19DD00AFB4E0 /* MLNFillStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35D13AC51D3D19DD00AFB4E0 /* MLNFillStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35D13AC21D3D19DD00AFB4E0 /* MLNFillStyleLayer.mm */; }; - 35D13AC61D3D19DD00AFB4E0 /* MLNFillStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35D13AC21D3D19DD00AFB4E0 /* MLNFillStyleLayer.mm */; }; - 35D3A1E61E9BE7EB002B38EE /* MLNScaleBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 355ADFFB1E9281DA00F3939D /* MLNScaleBar.h */; }; - 35D3A1E71E9BE7EC002B38EE /* MLNScaleBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 355ADFFB1E9281DA00F3939D /* MLNScaleBar.h */; }; - 35D9DDE21DA25EEC00DAAD69 /* MLNCodingTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35D9DDE11DA25EEC00DAAD69 /* MLNCodingTests.mm */; }; - 35E0CFE61D3E501500188327 /* MLNStyle_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E0CFE51D3E501500188327 /* MLNStyle_Private.h */; }; - 35E0CFE71D3E501500188327 /* MLNStyle_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E0CFE51D3E501500188327 /* MLNStyle_Private.h */; }; - 35E1A4D81D74336F007AA97F /* MLNValueEvaluator.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E1A4D71D74336F007AA97F /* MLNValueEvaluator.h */; }; - 35E1A4D91D74336F007AA97F /* MLNValueEvaluator.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E1A4D71D74336F007AA97F /* MLNValueEvaluator.h */; }; - 35E79F201D41266300957B9E /* MLNStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E79F1F1D41266300957B9E /* MLNStyleLayer_Private.h */; }; - 35E79F211D41266300957B9E /* MLNStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E79F1F1D41266300957B9E /* MLNStyleLayer_Private.h */; }; - 3E6465D62065767A00685536 /* LimeGreenStyleLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E6465D42065767A00685536 /* LimeGreenStyleLayer.m */; }; - 3E8770612074297100B7E842 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 554180411D2E97DE00012372 /* OpenGLES.framework */; }; - 3EA93369F61CF70AFA50465D /* MLNRendererConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EA931BC4F087E166D538F21 /* MLNRendererConfiguration.m */; }; - 3EA934623AD0000B7D99C3FB /* MLNRendererConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EA9337830C7738BF7F5493C /* MLNRendererConfiguration.h */; }; - 3EA9363147E77DD29FA06063 /* MLNRendererConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EA9337830C7738BF7F5493C /* MLNRendererConfiguration.h */; }; - 3EA9366247780E4F252652A8 /* MLNRendererConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EA931BC4F087E166D538F21 /* MLNRendererConfiguration.m */; }; - 400533011DB0862B0069F638 /* NSArray+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 400532FF1DB0862B0069F638 /* NSArray+MLNAdditions.h */; }; - 400533021DB0862B0069F638 /* NSArray+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 400533001DB0862B0069F638 /* NSArray+MLNAdditions.mm */; }; - 400533031DB086490069F638 /* NSArray+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 400533001DB0862B0069F638 /* NSArray+MLNAdditions.mm */; }; - 4018B1C81CDC287F00F666AF /* MLNAnnotationView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4018B1C41CDC277F00F666AF /* MLNAnnotationView.mm */; }; - 4018B1C91CDC288A00F666AF /* MLNAnnotationView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4018B1C31CDC277F00F666AF /* MLNAnnotationView_Private.h */; }; - 4018B1CA1CDC288E00F666AF /* MLNAnnotationView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4018B1C51CDC277F00F666AF /* MLNAnnotationView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4018B1CB1CDC288E00F666AF /* MLNAnnotationView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4018B1C51CDC277F00F666AF /* MLNAnnotationView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4031ACFF1E9FD29F00A3EA26 /* MLNSDKTestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4031ACFE1E9FD29F00A3EA26 /* MLNSDKTestHelpers.swift */; }; - 404326891D5B9B27007111BD /* MLNAnnotationContainerView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 404326881D5B9B1A007111BD /* MLNAnnotationContainerView_Private.h */; }; - 4049C29D1DB6CD6C00B3F799 /* MLNPointCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 4049C29B1DB6CD6C00B3F799 /* MLNPointCollection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4049C29E1DB6CD6C00B3F799 /* MLNPointCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 4049C29B1DB6CD6C00B3F799 /* MLNPointCollection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4049C29F1DB6CD6C00B3F799 /* MLNPointCollection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4049C29C1DB6CD6C00B3F799 /* MLNPointCollection.mm */; }; - 4049C2A01DB6CD6C00B3F799 /* MLNPointCollection.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4049C29C1DB6CD6C00B3F799 /* MLNPointCollection.mm */; }; - 4049C2AC1DB6E05500B3F799 /* MLNPointCollection_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4049C2AB1DB6E05500B3F799 /* MLNPointCollection_Private.h */; }; - 404C26E21D89B877000AA13D /* MLNTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 404C26E01D89B877000AA13D /* MLNTileSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 404C26E31D89B877000AA13D /* MLNTileSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 404C26E01D89B877000AA13D /* MLNTileSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 404C26E41D89B877000AA13D /* MLNTileSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 404C26E11D89B877000AA13D /* MLNTileSource.mm */; }; - 404C26E51D89B877000AA13D /* MLNTileSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 404C26E11D89B877000AA13D /* MLNTileSource.mm */; }; - 404C26E71D89C55D000AA13D /* MLNTileSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 404C26E61D89C515000AA13D /* MLNTileSource_Private.h */; }; - 404C26E81D89C55D000AA13D /* MLNTileSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 404C26E61D89C515000AA13D /* MLNTileSource_Private.h */; }; - 4085AF091D933DEA00F11B22 /* MLNTileSetTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4085AF081D933DEA00F11B22 /* MLNTileSetTests.mm */; }; - 408AA8571DAEDA1700022900 /* NSDictionary+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 408AA8551DAEDA0800022900 /* NSDictionary+MLNAdditions.h */; }; - 408AA8581DAEDA1E00022900 /* NSDictionary+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 408AA8561DAEDA0800022900 /* NSDictionary+MLNAdditions.mm */; }; - 408AA8591DAEDA1E00022900 /* NSDictionary+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 408AA8561DAEDA0800022900 /* NSDictionary+MLNAdditions.mm */; }; - 409D0A0D1ED614CE00C95D0C /* MLNAnnotationViewIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 409D0A0C1ED614CE00C95D0C /* MLNAnnotationViewIntegrationTests.swift */; }; - 409F43FD1E9E781C0048729D /* MLNMapViewDelegateIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 409F43FC1E9E781C0048729D /* MLNMapViewDelegateIntegrationTests.swift */; }; - 40CF6DBB1DAC3C6600A4D18B /* MLNShape_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 40CF6DBA1DAC3C1800A4D18B /* MLNShape_Private.h */; }; - 40CFA6511D7875BB008103BD /* MLNShapeSourceTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 40CFA6501D787579008103BD /* MLNShapeSourceTests.mm */; }; - 40EDA1C01CFE0E0200D9EA68 /* MLNAnnotationContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 40EDA1BD1CFE0D4A00D9EA68 /* MLNAnnotationContainerView.h */; }; - 40EDA1C11CFE0E0500D9EA68 /* MLNAnnotationContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 40EDA1BE1CFE0D4A00D9EA68 /* MLNAnnotationContainerView.m */; }; - 40EDA1C21CFE0E0500D9EA68 /* MLNAnnotationContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 40EDA1BE1CFE0D4A00D9EA68 /* MLNAnnotationContainerView.m */; }; - 40F887701D7A1E58008ECB67 /* MLNShapeSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 40F8876F1D7A1DB8008ECB67 /* MLNShapeSource_Private.h */; }; - 40F887711D7A1E59008ECB67 /* MLNShapeSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 40F8876F1D7A1DB8008ECB67 /* MLNShapeSource_Private.h */; }; - 40FDA76B1CCAAA6800442548 /* MBXAnnotationView.m in Sources */ = {isa = PBXBuildFile; fileRef = 40FDA76A1CCAAA6800442548 /* MBXAnnotationView.m */; }; - 4B8A425B2656ED62008E725A /* insert_access_token.sh in Resources */ = {isa = PBXBuildFile; fileRef = 4B8A425A2656ED62008E725A /* insert_access_token.sh */; }; - 4BAB4DA4264E6DCA00F015C1 /* MLNTileServerOptions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BAB4DA2264E6DCA00F015C1 /* MLNTileServerOptions.mm */; }; - 4BAB4DA5264E6DCA00F015C1 /* MLNTileServerOptions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BAB4DA2264E6DCA00F015C1 /* MLNTileServerOptions.mm */; }; - 4BAB4DA6264E6DCA00F015C1 /* MLNTileServerOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BAB4DA3264E6DCA00F015C1 /* MLNTileServerOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4BAB4DA7264E6DCA00F015C1 /* MLNTileServerOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BAB4DA3264E6DCA00F015C1 /* MLNTileServerOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4BAB4DB1264E6DE200F015C1 /* MLNDefaultStyle.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BAB4DAF264E6DE200F015C1 /* MLNDefaultStyle.mm */; }; - 4BAB4DB2264E6DE200F015C1 /* MLNDefaultStyle.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BAB4DAF264E6DE200F015C1 /* MLNDefaultStyle.mm */; }; - 4BAB4DB3264E6DE200F015C1 /* MLNDefaultStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BAB4DB0264E6DE200F015C1 /* MLNDefaultStyle.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4BAB4DB4264E6DE200F015C1 /* MLNDefaultStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BAB4DB0264E6DE200F015C1 /* MLNDefaultStyle.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4BC5769325E3D3D6006E06EB /* MLNUserLocationAnnotationViewStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BC5769125E3D3D6006E06EB /* MLNUserLocationAnnotationViewStyle.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4BC5769425E3D3D6006E06EB /* MLNUserLocationAnnotationViewStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BC5769125E3D3D6006E06EB /* MLNUserLocationAnnotationViewStyle.h */; }; - 4BC5769525E3D3D6006E06EB /* MLNUserLocationAnnotationViewStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BC5769225E3D3D6006E06EB /* MLNUserLocationAnnotationViewStyle.m */; }; - 4BC5769625E3D3D6006E06EB /* MLNUserLocationAnnotationViewStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BC5769225E3D3D6006E06EB /* MLNUserLocationAnnotationViewStyle.m */; }; - 4BC576C925E443CE006E06EB /* MLNFaux3DUserLocationAnnotationView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BC576C825E443CE006E06EB /* MLNFaux3DUserLocationAnnotationView.mm */; }; - 4BC576CA25E443CE006E06EB /* MLNFaux3DUserLocationAnnotationView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BC576C825E443CE006E06EB /* MLNFaux3DUserLocationAnnotationView.mm */; }; - 550570C622958FB400228ECF /* MLNMapView+Impl.mm in Sources */ = {isa = PBXBuildFile; fileRef = 550570C422958FB300228ECF /* MLNMapView+Impl.mm */; }; - 550570C722958FB400228ECF /* MLNMapView+Impl.mm in Sources */ = {isa = PBXBuildFile; fileRef = 550570C422958FB300228ECF /* MLNMapView+Impl.mm */; }; - 550570C822958FB400228ECF /* MLNMapView+Impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 550570C522958FB400228ECF /* MLNMapView+Impl.h */; }; - 550570C922958FB400228ECF /* MLNMapView+Impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 550570C522958FB400228ECF /* MLNMapView+Impl.h */; }; - 550570D22296E96E00228ECF /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA27C24D1CBB3811000B0ECD /* GLKit.framework */; }; - 556660CA1E1BF3A900E2C41B /* MLNFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 556660C91E1BF3A900E2C41B /* MLNFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 556660D81E1D085500E2C41B /* MLNVersionNumber.m in Sources */ = {isa = PBXBuildFile; fileRef = 556660D71E1D085500E2C41B /* MLNVersionNumber.m */; }; - 556660DB1E1D8E8D00E2C41B /* MLNFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 556660C91E1BF3A900E2C41B /* MLNFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5580B45B229570A10091291B /* MLNMapView+OpenGL.h in Headers */ = {isa = PBXBuildFile; fileRef = 5580B459229570A00091291B /* MLNMapView+OpenGL.h */; }; - 5580B45C229570A10091291B /* MLNMapView+OpenGL.h in Headers */ = {isa = PBXBuildFile; fileRef = 5580B459229570A00091291B /* MLNMapView+OpenGL.h */; }; - 5580B45D229570A10091291B /* MLNMapView+OpenGL.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5580B45A229570A10091291B /* MLNMapView+OpenGL.mm */; }; - 5580B45E229570A10091291B /* MLNMapView+OpenGL.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5580B45A229570A10091291B /* MLNMapView+OpenGL.mm */; }; - 558DE7A01E5615E400C7916D /* MLNFoundation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 558DE79E1E5615E400C7916D /* MLNFoundation_Private.h */; }; - 558DE7A11E5615E400C7916D /* MLNFoundation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 558DE79E1E5615E400C7916D /* MLNFoundation_Private.h */; }; - 558DE7A21E5615E400C7916D /* MLNFoundation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 558DE79F1E5615E400C7916D /* MLNFoundation.mm */; }; - 558DE7A31E5615E400C7916D /* MLNFoundation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 558DE79F1E5615E400C7916D /* MLNFoundation.mm */; }; - 55E2AD131E5B125400E8C587 /* MLNOfflineStorageTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 55E2AD121E5B125400E8C587 /* MLNOfflineStorageTests.mm */; }; - 632281DF1E6F855900D75A5D /* MBXEmbeddedMapViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 632281DE1E6F855900D75A5D /* MBXEmbeddedMapViewController.m */; }; - 6407D6701E0085FD00F6A9C3 /* MLNDocumentationExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6407D66F1E0085FD00F6A9C3 /* MLNDocumentationExampleTests.swift */; }; - 6F018BAE220031B8003E7269 /* UIView+MLNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAFA29B220023840088709E /* UIView+MLNAdditions.m */; }; - 6F018BAF220031BF003E7269 /* UIView+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAFA29A220023840088709E /* UIView+MLNAdditions.h */; }; - 6F018BB0220031BF003E7269 /* UIView+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FAFA29A220023840088709E /* UIView+MLNAdditions.h */; }; - 6F018BB1220031C1003E7269 /* UIView+MLNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAFA29B220023840088709E /* UIView+MLNAdditions.m */; }; - 6FA9341721EF372100AA9CA8 /* MBXOrnamentsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FA9341521EF372100AA9CA8 /* MBXOrnamentsViewController.m */; }; - 74CB5EB1219B252C00102936 /* MLNStyleLayerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EAF219B252C00102936 /* MLNStyleLayerManager.h */; }; - 74CB5EB2219B252C00102936 /* MLNStyleLayerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EAF219B252C00102936 /* MLNStyleLayerManager.h */; }; - 74CB5EB3219B252C00102936 /* MLNStyleLayerManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 74CB5EB0219B252C00102936 /* MLNStyleLayerManager.mm */; }; - 74CB5EB4219B252C00102936 /* MLNStyleLayerManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 74CB5EB0219B252C00102936 /* MLNStyleLayerManager.mm */; }; - 74CB5EB9219B280400102936 /* MLNHillshadeStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EB5219B280300102936 /* MLNHillshadeStyleLayer_Private.h */; }; - 74CB5EBA219B280400102936 /* MLNHillshadeStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EB5219B280300102936 /* MLNHillshadeStyleLayer_Private.h */; }; - 74CB5EBB219B280400102936 /* MLNFillExtrusionStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EB6219B280300102936 /* MLNFillExtrusionStyleLayer_Private.h */; }; - 74CB5EBC219B280400102936 /* MLNFillExtrusionStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EB6219B280300102936 /* MLNFillExtrusionStyleLayer_Private.h */; }; - 74CB5EBD219B280400102936 /* MLNFillStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EB7219B280300102936 /* MLNFillStyleLayer_Private.h */; }; - 74CB5EBE219B280400102936 /* MLNFillStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EB7219B280300102936 /* MLNFillStyleLayer_Private.h */; }; - 74CB5EBF219B280400102936 /* MLNHeatmapStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EB8219B280300102936 /* MLNHeatmapStyleLayer_Private.h */; }; - 74CB5EC0219B280400102936 /* MLNHeatmapStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EB8219B280300102936 /* MLNHeatmapStyleLayer_Private.h */; }; - 74CB5EC3219B282500102936 /* MLNCircleStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC1219B282500102936 /* MLNCircleStyleLayer_Private.h */; }; - 74CB5EC4219B282500102936 /* MLNCircleStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC1219B282500102936 /* MLNCircleStyleLayer_Private.h */; }; - 74CB5EC5219B282500102936 /* MLNBackgroundStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC2219B282500102936 /* MLNBackgroundStyleLayer_Private.h */; }; - 74CB5EC6219B282500102936 /* MLNBackgroundStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC2219B282500102936 /* MLNBackgroundStyleLayer_Private.h */; }; - 74CB5ECA219B285000102936 /* MLNLineStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC7219B285000102936 /* MLNLineStyleLayer_Private.h */; }; - 74CB5ECB219B285000102936 /* MLNLineStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC7219B285000102936 /* MLNLineStyleLayer_Private.h */; }; - 74CB5ECC219B285000102936 /* MLNOpenGLStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC8219B285000102936 /* MLNOpenGLStyleLayer_Private.h */; }; - 74CB5ECD219B285000102936 /* MLNOpenGLStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC8219B285000102936 /* MLNOpenGLStyleLayer_Private.h */; }; - 74CB5ECE219B285000102936 /* MLNRasterStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC9219B285000102936 /* MLNRasterStyleLayer_Private.h */; }; - 74CB5ECF219B285000102936 /* MLNRasterStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5EC9219B285000102936 /* MLNRasterStyleLayer_Private.h */; }; - 74CB5ED1219B286400102936 /* MLNSymbolStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5ED0219B286400102936 /* MLNSymbolStyleLayer_Private.h */; }; - 74CB5ED2219B286400102936 /* MLNSymbolStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 74CB5ED0219B286400102936 /* MLNSymbolStyleLayer_Private.h */; }; - 8989B17C201A48EB0081CF59 /* MLNHeatmapStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8989B17A201A48EA0081CF59 /* MLNHeatmapStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8989B17D201A48EB0081CF59 /* MLNHeatmapStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8989B17A201A48EA0081CF59 /* MLNHeatmapStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8989B17E201A48EB0081CF59 /* MLNHeatmapStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8989B17B201A48EA0081CF59 /* MLNHeatmapStyleLayer.mm */; }; - 8989B17F201A48EB0081CF59 /* MLNHeatmapStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8989B17B201A48EA0081CF59 /* MLNHeatmapStyleLayer.mm */; }; - 920A3E5D1E6F995200C16EFC /* MLNSourceQueryTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 920A3E5C1E6F995200C16EFC /* MLNSourceQueryTests.m */; }; - 9221BAAD2069843A0054BDF4 /* MLNTilePyramidOfflineRegion_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9221BAAC2069843A0054BDF4 /* MLNTilePyramidOfflineRegion_Private.h */; }; - 9221BAB020699F8A0054BDF4 /* MLNTilePyramidOfflineRegion_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9221BAAC2069843A0054BDF4 /* MLNTilePyramidOfflineRegion_Private.h */; }; - 927FBCFC1F4DAA8300F8BF1F /* MBXSnapshotsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 927FBCFB1F4DAA8300F8BF1F /* MBXSnapshotsViewController.m */; }; - 927FBCFF1F4DB05500F8BF1F /* MLNMapSnapshotter.h in Headers */ = {isa = PBXBuildFile; fileRef = 927FBCFD1F4DB05500F8BF1F /* MLNMapSnapshotter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 927FBD001F4DB05500F8BF1F /* MLNMapSnapshotter.h in Headers */ = {isa = PBXBuildFile; fileRef = 927FBCFD1F4DB05500F8BF1F /* MLNMapSnapshotter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 927FBD011F4DB05500F8BF1F /* MLNMapSnapshotter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 927FBCFE1F4DB05500F8BF1F /* MLNMapSnapshotter.mm */; }; - 927FBD021F4DB05500F8BF1F /* MLNMapSnapshotter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 927FBCFE1F4DB05500F8BF1F /* MLNMapSnapshotter.mm */; }; - 929EFFAB1F56DCD4003A77D5 /* MLNAnnotationView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4018B1C41CDC277F00F666AF /* MLNAnnotationView.mm */; }; - 92F2C3ED1F0E3C3A00268EC0 /* MLNRendererFrontend.h in Headers */ = {isa = PBXBuildFile; fileRef = 92F2C3EC1F0E3C3A00268EC0 /* MLNRendererFrontend.h */; }; - 92FC0AEA207CEE16007B6B54 /* MLNShapeOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = 92FC0AE7207CEE16007B6B54 /* MLNShapeOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 92FC0AEB207CEE16007B6B54 /* MLNShapeOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = 92FC0AE7207CEE16007B6B54 /* MLNShapeOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 92FC0AEC207CEE16007B6B54 /* MLNShapeOfflineRegion_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 92FC0AE8207CEE16007B6B54 /* MLNShapeOfflineRegion_Private.h */; }; - 92FC0AED207CEE16007B6B54 /* MLNShapeOfflineRegion_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 92FC0AE8207CEE16007B6B54 /* MLNShapeOfflineRegion_Private.h */; }; - 92FC0AEE207CEE16007B6B54 /* MLNShapeOfflineRegion.mm in Sources */ = {isa = PBXBuildFile; fileRef = 92FC0AE9207CEE16007B6B54 /* MLNShapeOfflineRegion.mm */; }; - 92FC0AEF207CEE16007B6B54 /* MLNShapeOfflineRegion.mm in Sources */ = {isa = PBXBuildFile; fileRef = 92FC0AE9207CEE16007B6B54 /* MLNShapeOfflineRegion.mm */; }; - 96036A01200565C700510F3D /* NSOrthography+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 960369FF200565C700510F3D /* NSOrthography+MLNAdditions.h */; }; - 96036A02200565C700510F3D /* NSOrthography+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 960369FF200565C700510F3D /* NSOrthography+MLNAdditions.h */; }; - 96036A03200565C700510F3D /* NSOrthography+MLNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96036A00200565C700510F3D /* NSOrthography+MLNAdditions.m */; }; - 96036A04200565C700510F3D /* NSOrthography+MLNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96036A00200565C700510F3D /* NSOrthography+MLNAdditions.m */; }; - 96036A0620059BBA00510F3D /* MLNNSOrthographyAdditionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 96036A0520059BBA00510F3D /* MLNNSOrthographyAdditionsTests.m */; }; - 960D0C361ECF5AAF008E151F /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 960D0C351ECF5AAF008E151F /* Images.xcassets */; }; - 960D0C371ECF5AAF008E151F /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 960D0C351ECF5AAF008E151F /* Images.xcassets */; }; - 9621F2502091020E005B3800 /* NSExpression+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3510FFEE1D6D9D8C00F413B2 /* NSExpression+MLNAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 96381C0222C6F3950053497D /* MLNMapViewPitchTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 96381C0122C6F3950053497D /* MLNMapViewPitchTests.m */; }; - 9641771F22D546DA00332422 /* MLNCompassButton_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9641771E22D546DA00332422 /* MLNCompassButton_Private.h */; }; - 9641772022D546DA00332422 /* MLNCompassButton_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9641771E22D546DA00332422 /* MLNCompassButton_Private.h */; }; - 9654C1261FFC1AB900DB6A19 /* MLNPolyline_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9654C1251FFC1AB900DB6A19 /* MLNPolyline_Private.h */; }; - 9654C1291FFC1CCD00DB6A19 /* MLNPolygon_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9654C1271FFC1CC000DB6A19 /* MLNPolygon_Private.h */; }; - 9658C155204761FC00D8A674 /* MLNMapViewScaleBarTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 9658C154204761FC00D8A674 /* MLNMapViewScaleBarTests.m */; }; - 965DF51120F9430500438AAC /* MBXFrameTimeGraphView.m in Sources */ = {isa = PBXBuildFile; fileRef = 965DF51020F9430500438AAC /* MBXFrameTimeGraphView.m */; }; - 966FCF4C1F3A5C9200F2B6DE /* MLNUserLocationHeadingBeamLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 966FCF4A1F3A5C9200F2B6DE /* MLNUserLocationHeadingBeamLayer.h */; }; - 966FCF4E1F3A5C9200F2B6DE /* MLNUserLocationHeadingBeamLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 966FCF4B1F3A5C9200F2B6DE /* MLNUserLocationHeadingBeamLayer.m */; }; - 966FCF4F1F3A5C9200F2B6DE /* MLNUserLocationHeadingBeamLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 966FCF4B1F3A5C9200F2B6DE /* MLNUserLocationHeadingBeamLayer.m */; }; - 966FCF531F3C322400F2B6DE /* MLNUserLocationHeadingArrowLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 966FCF501F3C321000F2B6DE /* MLNUserLocationHeadingArrowLayer.h */; }; - 966FCF541F3C323300F2B6DE /* MLNUserLocationHeadingArrowLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 966FCF511F3C321000F2B6DE /* MLNUserLocationHeadingArrowLayer.m */; }; - 966FCF551F3C323500F2B6DE /* MLNUserLocationHeadingArrowLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 966FCF511F3C321000F2B6DE /* MLNUserLocationHeadingArrowLayer.m */; }; - 967C864B210A9D3C004DF794 /* UIDevice+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 967C8649210A9D3C004DF794 /* UIDevice+MLNAdditions.h */; }; - 967C864C210A9D3C004DF794 /* UIDevice+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 967C8649210A9D3C004DF794 /* UIDevice+MLNAdditions.h */; }; - 967C864D210A9D3C004DF794 /* UIDevice+MLNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 967C864A210A9D3C004DF794 /* UIDevice+MLNAdditions.m */; }; - 967C864E210A9D3C004DF794 /* UIDevice+MLNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 967C864A210A9D3C004DF794 /* UIDevice+MLNAdditions.m */; }; - 9686D1BD22D9357700194EA0 /* MLNMapViewZoomTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9686D1BC22D9357700194EA0 /* MLNMapViewZoomTests.mm */; }; - 968F36B51E4D128D003A5522 /* MLNDistanceFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3557F7AE1E1D27D300CCA5E6 /* MLNDistanceFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 96E027231E57C76E004B8E66 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 96E027251E57C76E004B8E66 /* Localizable.strings */; }; - 96E516DC2000547000A02306 /* MLNPolyline_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9654C1251FFC1AB900DB6A19 /* MLNPolyline_Private.h */; }; - 96E516DD200054F200A02306 /* MLNPolygon_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 9654C1271FFC1CC000DB6A19 /* MLNPolygon_Private.h */; }; - 96E516DE200054F700A02306 /* MLNGeometry_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848011CBAFA6200AB86E3 /* MLNGeometry_Private.h */; }; - 96E516DF200054FB00A02306 /* MLNShape_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 40CF6DBA1DAC3C1800A4D18B /* MLNShape_Private.h */; }; - 96E516E02000550C00A02306 /* MLNFeature_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD1656A1CF41981001FF4B9 /* MLNFeature_Private.h */; }; - 96E516E12000551100A02306 /* MLNMultiPoint_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848041CBAFA6200AB86E3 /* MLNMultiPoint_Private.h */; }; - 96E516E22000551900A02306 /* MLNPointCollection_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4049C2AB1DB6E05500B3F799 /* MLNPointCollection_Private.h */; }; - 96E516E32000552A00A02306 /* MLNSettings_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847FF1CBAFA6200AB86E3 /* MLNSettings_Private.h */; }; - 96E516E42000560B00A02306 /* MLNComputedShapeSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 07D9474E1F67487E00E37934 /* MLNComputedShapeSource_Private.h */; }; - 96E516E52000560B00A02306 /* MLNOfflinePack_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848061CBAFA6200AB86E3 /* MLNOfflinePack_Private.h */; }; - 96E516E62000560B00A02306 /* MLNOfflineRegion_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848081CBAFA6200AB86E3 /* MLNOfflineRegion_Private.h */; }; - 96E516E72000560B00A02306 /* MLNOfflineStorage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848091CBAFA6200AB86E3 /* MLNOfflineStorage_Private.h */; }; - 96E516E82000560B00A02306 /* MLNAnnotationContainerView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 404326881D5B9B1A007111BD /* MLNAnnotationContainerView_Private.h */; }; - 96E516E92000560B00A02306 /* MLNAnnotationImage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848401CBAFB9800AB86E3 /* MLNAnnotationImage_Private.h */; }; - 96E516EA2000560B00A02306 /* MLNAnnotationView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 4018B1C31CDC277F00F666AF /* MLNAnnotationView_Private.h */; }; - 96E516EB2000560B00A02306 /* MLNUserLocation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88484B1CBAFB9800AB86E3 /* MLNUserLocation_Private.h */; }; - 96E516EC2000560B00A02306 /* MLNUserLocationAnnotationView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 359F57451D2FDBD5005217F1 /* MLNUserLocationAnnotationView_Private.h */; }; - 96E516ED200058A200A02306 /* MLNComputedShapeSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 0778DD401F67555F00A73B34 /* MLNComputedShapeSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 96E516EF2000594F00A02306 /* NSArray+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 400532FF1DB0862B0069F638 /* NSArray+MLNAdditions.h */; }; - 96E516F02000595800A02306 /* NSBundle+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848121CBAFA6200AB86E3 /* NSBundle+MLNAdditions.h */; }; - 96E516F12000596800A02306 /* NSString+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848171CBAFA6200AB86E3 /* NSString+MLNAdditions.h */; }; - 96E516F22000596D00A02306 /* NSException+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848141CBAFA6200AB86E3 /* NSException+MLNAdditions.h */; }; - 96E516F32000597100A02306 /* NSDictionary+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 408AA8551DAEDA0800022900 /* NSDictionary+MLNAdditions.h */; }; - 96E516F5200059B100A02306 /* MLNNetworkConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = DD0902A41DB18F1B00C5BDCE /* MLNNetworkConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 96E516F6200059EC00A02306 /* MLNRendererFrontend.h in Headers */ = {isa = PBXBuildFile; fileRef = 92F2C3EC1F0E3C3A00268EC0 /* MLNRendererFrontend.h */; }; - 96E516F720005A2700A02306 /* MLNAnnotationContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 40EDA1BD1CFE0D4A00D9EA68 /* MLNAnnotationContainerView.h */; }; - 96E516F820005A3000A02306 /* MLNCompactCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848441CBAFB9800AB86E3 /* MLNCompactCalloutView.h */; }; - 96E516F920005A3500A02306 /* MLNFaux3DUserLocationAnnotationView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88484D1CBAFB9800AB86E3 /* MLNFaux3DUserLocationAnnotationView.h */; }; - 96E516FA20005A3D00A02306 /* MLNUserLocationHeadingArrowLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 966FCF501F3C321000F2B6DE /* MLNUserLocationHeadingArrowLayer.h */; }; - 96E516FB20005A4000A02306 /* MLNUserLocationHeadingBeamLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 966FCF4A1F3A5C9200F2B6DE /* MLNUserLocationHeadingBeamLayer.h */; }; - 96E516FC20005A4400A02306 /* MLNUserLocationHeadingIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 96F3F73B1F5711F1003E2D2C /* MLNUserLocationHeadingIndicator.h */; }; - 96E5170420005A6B00A02306 /* SMCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848891CBB037E00AB86E3 /* SMCalloutView.h */; }; - 96E6145622CC135200109F14 /* MLNMapViewCompassViewTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 96E6145522CC135200109F14 /* MLNMapViewCompassViewTests.mm */; }; - 96E6145922CC169000109F14 /* MLNCompassButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E6145722CC169000109F14 /* MLNCompassButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 96E6145A22CC169000109F14 /* MLNCompassButton.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E6145722CC169000109F14 /* MLNCompassButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 96E6145B22CC169000109F14 /* MLNCompassButton.mm in Sources */ = {isa = PBXBuildFile; fileRef = 96E6145822CC169000109F14 /* MLNCompassButton.mm */; }; - 96E6145C22CC169000109F14 /* MLNCompassButton.mm in Sources */ = {isa = PBXBuildFile; fileRef = 96E6145822CC169000109F14 /* MLNCompassButton.mm */; }; - 96ED34DE22374C0900E9FCA9 /* MLNMapViewDirectionTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 96ED34DD22374C0900E9FCA9 /* MLNMapViewDirectionTests.mm */; }; - 96F3F73C1F57124B003E2D2C /* MLNUserLocationHeadingIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 96F3F73B1F5711F1003E2D2C /* MLNUserLocationHeadingIndicator.h */; }; - A4DE3DCB23038C98005B3473 /* MLNMockGestureRecognizers.h in Sources */ = {isa = PBXBuildFile; fileRef = A4DE3DCA23038A7F005B3473 /* MLNMockGestureRecognizers.h */; }; - A4DE3DCC23038CCA005B3473 /* MLNMockGestureRecognizers.m in Sources */ = {isa = PBXBuildFile; fileRef = A4DE3DC823038A07005B3473 /* MLNMockGestureRecognizers.m */; }; - A4F3FB1D2254865900A30170 /* missing_icon.json in Resources */ = {isa = PBXBuildFile; fileRef = A4F3FB1C2254865900A30170 /* missing_icon.json */; }; - CA0B3C022329DE9A00E4B493 /* MLNTestAssertionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = CAAA65D82321BBA900F08A39 /* MLNTestAssertionHandler.m */; }; - CA0C27922076C804001CE5B7 /* MLNShapeSourceTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CA0C27912076C804001CE5B7 /* MLNShapeSourceTests.m */; }; - CA0C27942076CA19001CE5B7 /* MLNMapViewIntegrationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CA0C27932076CA19001CE5B7 /* MLNMapViewIntegrationTest.m */; }; - CA0FAA05237B3BB700C9F3C9 /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; }; - CA0FAA07237B3BC600C9F3C9 /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; }; - CA0FAA09237B3BEA00C9F3C9 /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; }; - CA17464E23D8A93C008B7A43 /* MLNNetworkConfigurationIntegrationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CA17464D23D8A93C008B7A43 /* MLNNetworkConfigurationIntegrationTests.mm */; }; - CA1B4A512099FB2200EDD491 /* MLNMapSnapshotterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CA1B4A502099FB2200EDD491 /* MLNMapSnapshotterTest.m */; }; - CA4C54FE2324948100A81659 /* MLNSourceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA4C54FD2324948100A81659 /* MLNSourceTests.swift */; }; - CA4EB8C720863487006AB465 /* MLNStyleLayerIntegrationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CA4EB8C620863487006AB465 /* MLNStyleLayerIntegrationTests.m */; }; - CA4F3BDE230F74C3008BAFEA /* MLNMapViewPendingBlockTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CA4F3BDD230F74C3008BAFEA /* MLNMapViewPendingBlockTests.m */; }; - CA4F3BE223107793008BAFEA /* MLNCameraTransitionTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CA4F3BE123107793008BAFEA /* MLNCameraTransitionTests.mm */; }; - CA4F3BE4231077B9008BAFEA /* MLNCameraTransitionFinishTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CA4F3BE3231077B9008BAFEA /* MLNCameraTransitionFinishTests.mm */; }; - CA55CD41202C16AA00CE7095 /* MLNCameraChangeReason.h in Headers */ = {isa = PBXBuildFile; fileRef = CA55CD3E202C16AA00CE7095 /* MLNCameraChangeReason.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CA55CD42202C16AA00CE7095 /* MLNCameraChangeReason.h in Headers */ = {isa = PBXBuildFile; fileRef = CA55CD3E202C16AA00CE7095 /* MLNCameraChangeReason.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CA600149242BD8360041BBEC /* MLNIntegrationTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = CA600148242BD8360041BBEC /* MLNIntegrationTestCase.m */; }; - CA65C4F821E9BB080068B0D4 /* MLNCluster.h in Headers */ = {isa = PBXBuildFile; fileRef = CA65C4F721E9BB080068B0D4 /* MLNCluster.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CA65C4F921E9BB080068B0D4 /* MLNCluster.h in Headers */ = {isa = PBXBuildFile; fileRef = CA65C4F721E9BB080068B0D4 /* MLNCluster.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CA6914B520E67F50002DB0EE /* MLNAnnotationViewIntegrationTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CA6914B420E67F50002DB0EE /* MLNAnnotationViewIntegrationTests.mm */; }; - CA7766832229C10E0008DE9E /* MLNCompactCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848451CBAFB9800AB86E3 /* MLNCompactCalloutView.m */; }; - CA7766842229C11A0008DE9E /* SMCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88488A1CBB037E00AB86E3 /* SMCalloutView.m */; }; - CA86FF0E22D8D5A0009EB14A /* MLNNetworkConfigurationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CA86FF0D22D8D5A0009EB14A /* MLNNetworkConfigurationTests.m */; }; - CA88DC3021C85D900059ED5A /* MLNStyleURLIntegrationTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CA88DC2F21C85D900059ED5A /* MLNStyleURLIntegrationTest.m */; }; - CA8FBC0921A47BB100D1203C /* MLNRendererConfigurationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CA8FBC0821A47BB100D1203C /* MLNRendererConfigurationTests.m */; }; - CA94E5FB237D21030037AEA0 /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; }; - CA94E5FC237D21030037AEA0 /* Mapbox.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - CAA69DA5206DCD0E007279CD /* Mapbox.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DA4A26961CB6E795000B7809 /* Mapbox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - CAAA65D92321BBA900F08A39 /* MLNTestAssertionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = CAAA65D82321BBA900F08A39 /* MLNTestAssertionHandler.m */; }; - CAB369E5237471D600592F74 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F7839A3235E11FC00D4D606 /* libz.tbd */; }; - CABC52C22368CB5100B7E543 /* sideload_sat.db in Resources */ = {isa = PBXBuildFile; fileRef = 1F7839A5235E137000D4D606 /* sideload_sat.db */; }; - CAD9D0AA22A86D6F001B25EE /* MLNResourceTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = CAD9D0A922A86D6F001B25EE /* MLNResourceTests.mm */; }; - CAE7AD5520F46EF5003B6782 /* MLNMapSnapshotterSwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAE7AD5420F46EF5003B6782 /* MLNMapSnapshotterSwiftTests.swift */; }; - CAFB3C14234505D500399265 /* MLNMapSnapshotter_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CAFB3C13234505D500399265 /* MLNMapSnapshotter_Private.h */; }; - CAFB3C15234505D500399265 /* MLNMapSnapshotter_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CAFB3C13234505D500399265 /* MLNMapSnapshotter_Private.h */; }; - CF75A91522D85E860058A5C4 /* MLNLoggingConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = CF75A91422D85E860058A5C4 /* MLNLoggingConfiguration.mm */; }; - CF75A91622D85E860058A5C4 /* MLNLoggingConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = CF75A91422D85E860058A5C4 /* MLNLoggingConfiguration.mm */; }; - D42DE1E4275F7FEB00B4446E /* MLNMapProjection.h in Headers */ = {isa = PBXBuildFile; fileRef = D42DE1E2275F7FEB00B4446E /* MLNMapProjection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D42DE1E5275F7FEB00B4446E /* MLNMapProjection.h in Headers */ = {isa = PBXBuildFile; fileRef = D42DE1E2275F7FEB00B4446E /* MLNMapProjection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D42DE1E6275F7FEB00B4446E /* MLNMapProjection.mm in Sources */ = {isa = PBXBuildFile; fileRef = D42DE1E3275F7FEB00B4446E /* MLNMapProjection.mm */; }; - D42DE1E7275F7FEB00B4446E /* MLNMapProjection.mm in Sources */ = {isa = PBXBuildFile; fileRef = D42DE1E3275F7FEB00B4446E /* MLNMapProjection.mm */; }; - D4D7412E2760EEBA00102513 /* MLNMapProjectionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D4D7412D2760EEBA00102513 /* MLNMapProjectionTests.m */; }; - D717FE7A25F1955A0054E06E /* iosapp_UITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D717FE7925F1955A0054E06E /* iosapp_UITests.swift */; }; - D717FECB25F19F520054E06E /* XCTestCase+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D717FECA25F19F520054E06E /* XCTestCase+Extensions.swift */; }; - D7E7CE8825F2EF6A00C175FC /* bench_UITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7E7CE8725F2EF6A00C175FC /* bench_UITests.swift */; }; - DA00FC8E1D5EEB0D009AABC8 /* MLNAttributionInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = DA00FC8C1D5EEB0D009AABC8 /* MLNAttributionInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA00FC8F1D5EEB0D009AABC8 /* MLNAttributionInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = DA00FC8C1D5EEB0D009AABC8 /* MLNAttributionInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA00FC901D5EEB0D009AABC8 /* MLNAttributionInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA00FC8D1D5EEB0D009AABC8 /* MLNAttributionInfo.mm */; }; - DA00FC911D5EEB0D009AABC8 /* MLNAttributionInfo.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA00FC8D1D5EEB0D009AABC8 /* MLNAttributionInfo.mm */; }; - DA0BDD1F2407C09C00DAA576 /* libmbgl-vendor-icu.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 358B3DBA2359EA0F007BEB26 /* libmbgl-vendor-icu.a */; }; - DA0BDD202407C12600DAA576 /* libmbgl-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F78399D235AA1E600D4D606 /* libmbgl-core.a */; }; - DA0BDD212407C13000DAA576 /* libmbgl-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F78399D235AA1E600D4D606 /* libmbgl-core.a */; }; - DA0CD5901CF56F6A00A5F5A5 /* MLNFeatureTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA0CD58F1CF56F6A00A5F5A5 /* MLNFeatureTests.mm */; }; - DA0E9F3F2411AC9B007C75D4 /* MLNImageTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA0E9F3E2411AC9B007C75D4 /* MLNImageTests.mm */; }; - DA17BE301CC4BAC300402C41 /* MLNMapView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA17BE2F1CC4BAC300402C41 /* MLNMapView_Private.h */; }; - DA17BE311CC4BDAA00402C41 /* MLNMapView_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA17BE2F1CC4BAC300402C41 /* MLNMapView_Private.h */; }; - DA1DC96A1CB6C6B7006E619F /* MBXCustomCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA1DC9671CB6C6B7006E619F /* MBXCustomCalloutView.m */; }; - DA1DC96B1CB6C6B7006E619F /* MBXOfflinePacksTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DA1DC9691CB6C6B7006E619F /* MBXOfflinePacksTableViewController.m */; }; - DA1DC9701CB6C6CE006E619F /* points.geojson in Resources */ = {isa = PBXBuildFile; fileRef = DA1DC96C1CB6C6CE006E619F /* points.geojson */; }; - DA1DC9711CB6C6CE006E619F /* polyline.geojson in Resources */ = {isa = PBXBuildFile; fileRef = DA1DC96D1CB6C6CE006E619F /* polyline.geojson */; }; - DA1DC9731CB6C6CE006E619F /* threestates.geojson in Resources */ = {isa = PBXBuildFile; fileRef = DA1DC96F1CB6C6CE006E619F /* threestates.geojson */; }; - DA1DC9971CB6E046006E619F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DA1DC9961CB6E046006E619F /* main.m */; }; - DA1DC9991CB6E054006E619F /* MBXAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DA1DC9981CB6E054006E619F /* MBXAppDelegate.m */; }; - DA1DC99B1CB6E064006E619F /* MBXViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DA1DC99A1CB6E064006E619F /* MBXViewController.m */; }; - DA1DC99F1CB6E088006E619F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DA1DC99E1CB6E088006E619F /* Assets.xcassets */; }; - DA1F8F3D1EBD287B00367E42 /* MLNDocumentationGuideTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA1F8F3C1EBD287B00367E42 /* MLNDocumentationGuideTests.swift */; }; - DA2784FC1DF02FF4001D5B8D /* Media.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DA2784FB1DF02FF4001D5B8D /* Media.xcassets */; }; - DA27C24E1CBB3811000B0ECD /* GLKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA27C24D1CBB3811000B0ECD /* GLKit.framework */; }; - DA27C24F1CBB4C11000B0ECD /* MLNSettings_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847FF1CBAFA6200AB86E3 /* MLNSettings_Private.h */; }; - DA2DBBCE1D51E80400D38FF9 /* MLNStyleLayerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA2DBBCD1D51E80400D38FF9 /* MLNStyleLayerTests.m */; }; - DA2E88611CC0382C00F24E7B /* MLNGeometryTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA2E885C1CC0382C00F24E7B /* MLNGeometryTests.mm */; }; - DA2E88621CC0382C00F24E7B /* MLNOfflinePackTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA2E885D1CC0382C00F24E7B /* MLNOfflinePackTests.mm */; }; - DA2E88631CC0382C00F24E7B /* MLNOfflineRegionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA2E885E1CC0382C00F24E7B /* MLNOfflineRegionTests.m */; }; - DA2E88651CC0382C00F24E7B /* MLNStyleTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA2E88601CC0382C00F24E7B /* MLNStyleTests.mm */; }; - DA35A29E1CC9E94C00E826B2 /* MLNCoordinateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A29D1CC9E94C00E826B2 /* MLNCoordinateFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA35A29F1CC9E94C00E826B2 /* MLNCoordinateFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A29D1CC9E94C00E826B2 /* MLNCoordinateFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA35A2A11CC9E95F00E826B2 /* MLNCoordinateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2A01CC9E95F00E826B2 /* MLNCoordinateFormatter.m */; }; - DA35A2A21CC9E95F00E826B2 /* MLNCoordinateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2A01CC9E95F00E826B2 /* MLNCoordinateFormatter.m */; }; - DA35A2AA1CCA058D00E826B2 /* MLNCoordinateFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2A91CCA058D00E826B2 /* MLNCoordinateFormatterTests.m */; }; - DA35A2B11CCA141D00E826B2 /* MLNCompassDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2AF1CCA141D00E826B2 /* MLNCompassDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA35A2B21CCA141D00E826B2 /* MLNCompassDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2AF1CCA141D00E826B2 /* MLNCompassDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA35A2B31CCA141D00E826B2 /* MLNCompassDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B01CCA141D00E826B2 /* MLNCompassDirectionFormatter.m */; }; - DA35A2B41CCA141D00E826B2 /* MLNCompassDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B01CCA141D00E826B2 /* MLNCompassDirectionFormatter.m */; }; - DA35A2B81CCA9A5D00E826B2 /* MLNClockDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B71CCA9A5D00E826B2 /* MLNClockDirectionFormatter.m */; }; - DA35A2B91CCA9A5D00E826B2 /* MLNClockDirectionFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2B71CCA9A5D00E826B2 /* MLNClockDirectionFormatter.m */; }; - DA35A2BB1CCA9A6900E826B2 /* MLNClockDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2BA1CCA9A6900E826B2 /* MLNClockDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA35A2BC1CCA9A6900E826B2 /* MLNClockDirectionFormatter.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2BA1CCA9A6900E826B2 /* MLNClockDirectionFormatter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA35A2C51CCA9F8300E826B2 /* MLNClockDirectionFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2C31CCA9F8300E826B2 /* MLNClockDirectionFormatterTests.m */; }; - DA35A2C61CCA9F8300E826B2 /* MLNCompassDirectionFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2C41CCA9F8300E826B2 /* MLNCompassDirectionFormatterTests.m */; }; - DA35A2C91CCAAAD200E826B2 /* NSValue+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2C71CCAAAD200E826B2 /* NSValue+MLNAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA35A2CA1CCAAAD200E826B2 /* NSValue+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35A2C71CCAAAD200E826B2 /* NSValue+MLNAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA35A2CB1CCAAAD200E826B2 /* NSValue+MLNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2C81CCAAAD200E826B2 /* NSValue+MLNAdditions.m */; }; - DA35A2CC1CCAAAD200E826B2 /* NSValue+MLNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35A2C81CCAAAD200E826B2 /* NSValue+MLNAdditions.m */; }; - DA35D0881E1A6309007DED41 /* one-liner.json in Resources */ = {isa = PBXBuildFile; fileRef = DA35D0871E1A6309007DED41 /* one-liner.json */; }; - DA35D9C0240916290013ECB0 /* MLNReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35D9BE240916290013ECB0 /* MLNReachability.m */; }; - DA35D9C1240916290013ECB0 /* MLNReachability.m in Sources */ = {isa = PBXBuildFile; fileRef = DA35D9BE240916290013ECB0 /* MLNReachability.m */; }; - DA35D9C2240916290013ECB0 /* MLNReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35D9BF240916290013ECB0 /* MLNReachability.h */; }; - DA35D9C3240916290013ECB0 /* MLNReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = DA35D9BF240916290013ECB0 /* MLNReachability.h */; }; - DA35D9CE240920AB0013ECB0 /* libmbgl-vendor-csscolorparser.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA35D9CC240920910013ECB0 /* libmbgl-vendor-csscolorparser.a */; }; - DA35D9CF240920AC0013ECB0 /* libmbgl-vendor-csscolorparser.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA35D9CC240920910013ECB0 /* libmbgl-vendor-csscolorparser.a */; }; - DA35D9D1240920B60013ECB0 /* libmbgl-vendor-parsedate.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA35D9D0240920B60013ECB0 /* libmbgl-vendor-parsedate.a */; }; - DA35D9D2240920BE0013ECB0 /* libmbgl-vendor-parsedate.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA35D9D0240920B60013ECB0 /* libmbgl-vendor-parsedate.a */; }; - DA35D9D4240992400013ECB0 /* libmbgl-vendor-csscolorparser.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DA35D9CC240920910013ECB0 /* libmbgl-vendor-csscolorparser.a */; }; - DA35D9D52409925E0013ECB0 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 358B3DB82359E491007BEB26 /* libsqlite3.tbd */; }; - DA35D9D6240992760013ECB0 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F7839A3235E11FC00D4D606 /* libz.tbd */; }; - DA5DB12A1FABF1EE001C2326 /* MLNMapAccessibilityElementTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA5DB1291FABF1EE001C2326 /* MLNMapAccessibilityElementTests.m */; }; - DA6408DB1DA4E7D300908C90 /* MLNVectorStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DA6408D91DA4E7D300908C90 /* MLNVectorStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA6408DC1DA4E7D300908C90 /* MLNVectorStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DA6408D91DA4E7D300908C90 /* MLNVectorStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA6408DD1DA4E7D300908C90 /* MLNVectorStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA6408DA1DA4E7D300908C90 /* MLNVectorStyleLayer.mm */; }; - DA6408DE1DA4E7D300908C90 /* MLNVectorStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA6408DA1DA4E7D300908C90 /* MLNVectorStyleLayer.mm */; }; - DA695426215B1E76002041A4 /* MLNMapCameraTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DA695425215B1E75002041A4 /* MLNMapCameraTests.m */; }; - DA704CC21F65A475004B3F28 /* MLNMapAccessibilityElement.h in Headers */ = {isa = PBXBuildFile; fileRef = DA704CC01F65A475004B3F28 /* MLNMapAccessibilityElement.h */; }; - DA704CC31F65A475004B3F28 /* MLNMapAccessibilityElement.h in Headers */ = {isa = PBXBuildFile; fileRef = DA704CC01F65A475004B3F28 /* MLNMapAccessibilityElement.h */; }; - DA704CC41F65A475004B3F28 /* MLNMapAccessibilityElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA704CC11F65A475004B3F28 /* MLNMapAccessibilityElement.mm */; }; - DA704CC51F65A475004B3F28 /* MLNMapAccessibilityElement.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA704CC11F65A475004B3F28 /* MLNMapAccessibilityElement.mm */; }; - DA72620B1DEEE3480043BB89 /* MLNOpenGLStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DA7262091DEEE3480043BB89 /* MLNOpenGLStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA72620C1DEEE3480043BB89 /* MLNOpenGLStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DA7262091DEEE3480043BB89 /* MLNOpenGLStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA72620D1DEEE3480043BB89 /* MLNOpenGLStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA72620A1DEEE3480043BB89 /* MLNOpenGLStyleLayer.mm */; }; - DA72620E1DEEE3480043BB89 /* MLNOpenGLStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA72620A1DEEE3480043BB89 /* MLNOpenGLStyleLayer.mm */; }; - DA737EE11D056A4E005BDA16 /* MLNMapViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DA737EE01D056A4E005BDA16 /* MLNMapViewDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA737EE21D056A4E005BDA16 /* MLNMapViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DA737EE01D056A4E005BDA16 /* MLNMapViewDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA821D061CCC6D59007508D4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DA821D041CCC6D59007508D4 /* LaunchScreen.storyboard */; }; - DA821D071CCC6D59007508D4 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DA821D051CCC6D59007508D4 /* Main.storyboard */; }; - DA8847EF1CBAFA5100AB86E3 /* MLNSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847DF1CBAFA5100AB86E3 /* MLNSettings.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA8847F01CBAFA5100AB86E3 /* MLNAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E01CBAFA5100AB86E3 /* MLNAnnotation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA8847F11CBAFA5100AB86E3 /* MLNGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E11CBAFA5100AB86E3 /* MLNGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA8847F21CBAFA5100AB86E3 /* MLNMapCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E21CBAFA5100AB86E3 /* MLNMapCamera.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA8847F31CBAFA5100AB86E3 /* MLNMultiPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E31CBAFA5100AB86E3 /* MLNMultiPoint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA8847F41CBAFA5100AB86E3 /* MLNOfflinePack.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E41CBAFA5100AB86E3 /* MLNOfflinePack.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA8847F51CBAFA5100AB86E3 /* MLNOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E51CBAFA5100AB86E3 /* MLNOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA8847F61CBAFA5100AB86E3 /* MLNOfflineStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E61CBAFA5100AB86E3 /* MLNOfflineStorage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA8847F71CBAFA5100AB86E3 /* MLNOverlay.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E71CBAFA5100AB86E3 /* MLNOverlay.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA8847F81CBAFA5100AB86E3 /* MLNPointAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E81CBAFA5100AB86E3 /* MLNPointAnnotation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA8847F91CBAFA5100AB86E3 /* MLNPolygon.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E91CBAFA5100AB86E3 /* MLNPolygon.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA8847FA1CBAFA5100AB86E3 /* MLNPolyline.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EA1CBAFA5100AB86E3 /* MLNPolyline.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA8847FB1CBAFA5100AB86E3 /* MLNShape.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EB1CBAFA5100AB86E3 /* MLNShape.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA8847FC1CBAFA5100AB86E3 /* MLNStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EC1CBAFA5100AB86E3 /* MLNStyle.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA8847FD1CBAFA5100AB86E3 /* MLNTilePyramidOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847ED1CBAFA5100AB86E3 /* MLNTilePyramidOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA8847FE1CBAFA5100AB86E3 /* MLNTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EE1CBAFA5100AB86E3 /* MLNTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA88481A1CBAFA6200AB86E3 /* MLNSettings.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848001CBAFA6200AB86E3 /* MLNSettings.mm */; }; - DA88481B1CBAFA6200AB86E3 /* MLNGeometry_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848011CBAFA6200AB86E3 /* MLNGeometry_Private.h */; }; - DA88481C1CBAFA6200AB86E3 /* MLNGeometry.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848021CBAFA6200AB86E3 /* MLNGeometry.mm */; }; - DA88481D1CBAFA6200AB86E3 /* MLNMapCamera.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848031CBAFA6200AB86E3 /* MLNMapCamera.mm */; }; - DA88481E1CBAFA6200AB86E3 /* MLNMultiPoint_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848041CBAFA6200AB86E3 /* MLNMultiPoint_Private.h */; }; - DA88481F1CBAFA6200AB86E3 /* MLNMultiPoint.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848051CBAFA6200AB86E3 /* MLNMultiPoint.mm */; }; - DA8848201CBAFA6200AB86E3 /* MLNOfflinePack_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848061CBAFA6200AB86E3 /* MLNOfflinePack_Private.h */; }; - DA8848211CBAFA6200AB86E3 /* MLNOfflinePack.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848071CBAFA6200AB86E3 /* MLNOfflinePack.mm */; }; - DA8848221CBAFA6200AB86E3 /* MLNOfflineRegion_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848081CBAFA6200AB86E3 /* MLNOfflineRegion_Private.h */; }; - DA8848231CBAFA6200AB86E3 /* MLNOfflineStorage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848091CBAFA6200AB86E3 /* MLNOfflineStorage_Private.h */; }; - DA8848241CBAFA6200AB86E3 /* MLNOfflineStorage.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480A1CBAFA6200AB86E3 /* MLNOfflineStorage.mm */; }; - DA8848251CBAFA6200AB86E3 /* MLNPointAnnotation.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480B1CBAFA6200AB86E3 /* MLNPointAnnotation.mm */; }; - DA8848261CBAFA6200AB86E3 /* MLNPolygon.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480C1CBAFA6200AB86E3 /* MLNPolygon.mm */; }; - DA8848271CBAFA6200AB86E3 /* MLNPolyline.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480D1CBAFA6200AB86E3 /* MLNPolyline.mm */; }; - DA8848281CBAFA6200AB86E3 /* MLNShape.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480E1CBAFA6200AB86E3 /* MLNShape.mm */; }; - DA8848291CBAFA6200AB86E3 /* MLNStyle.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480F1CBAFA6200AB86E3 /* MLNStyle.mm */; }; - DA88482A1CBAFA6200AB86E3 /* MLNTilePyramidOfflineRegion.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848101CBAFA6200AB86E3 /* MLNTilePyramidOfflineRegion.mm */; }; - DA88482B1CBAFA6200AB86E3 /* MLNTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848111CBAFA6200AB86E3 /* MLNTypes.m */; }; - DA88482C1CBAFA6200AB86E3 /* NSBundle+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848121CBAFA6200AB86E3 /* NSBundle+MLNAdditions.h */; }; - DA88482D1CBAFA6200AB86E3 /* NSBundle+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848131CBAFA6200AB86E3 /* NSBundle+MLNAdditions.mm */; }; - DA88482E1CBAFA6200AB86E3 /* NSException+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848141CBAFA6200AB86E3 /* NSException+MLNAdditions.h */; }; - DA8848311CBAFA6200AB86E3 /* NSString+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848171CBAFA6200AB86E3 /* NSString+MLNAdditions.h */; }; - DA8848321CBAFA6200AB86E3 /* NSString+MLNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848181CBAFA6200AB86E3 /* NSString+MLNAdditions.m */; }; - DA88483A1CBAFB8500AB86E3 /* MLNAnnotationImage.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848341CBAFB8500AB86E3 /* MLNAnnotationImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA88483B1CBAFB8500AB86E3 /* MLNCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848351CBAFB8500AB86E3 /* MLNCalloutView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA88483C1CBAFB8500AB86E3 /* MLNMapView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848361CBAFB8500AB86E3 /* MLNMapView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA88483D1CBAFB8500AB86E3 /* MLNMapView+IBAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848371CBAFB8500AB86E3 /* MLNMapView+IBAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA88483F1CBAFB8500AB86E3 /* MLNUserLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848391CBAFB8500AB86E3 /* MLNUserLocation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA88484F1CBAFB9800AB86E3 /* MLNAnnotationImage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848401CBAFB9800AB86E3 /* MLNAnnotationImage_Private.h */; }; - DA8848501CBAFB9800AB86E3 /* MLNAnnotationImage.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848411CBAFB9800AB86E3 /* MLNAnnotationImage.m */; }; - DA8848531CBAFB9800AB86E3 /* MLNCompactCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848441CBAFB9800AB86E3 /* MLNCompactCalloutView.h */; }; - DA8848541CBAFB9800AB86E3 /* MLNCompactCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848451CBAFB9800AB86E3 /* MLNCompactCalloutView.m */; }; - DA8848591CBAFB9800AB86E3 /* MLNMapView.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88484A1CBAFB9800AB86E3 /* MLNMapView.mm */; }; - DA88485A1CBAFB9800AB86E3 /* MLNUserLocation_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88484B1CBAFB9800AB86E3 /* MLNUserLocation_Private.h */; }; - DA88485B1CBAFB9800AB86E3 /* MLNUserLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88484C1CBAFB9800AB86E3 /* MLNUserLocation.m */; }; - DA88485C1CBAFB9800AB86E3 /* MLNFaux3DUserLocationAnnotationView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88484D1CBAFB9800AB86E3 /* MLNFaux3DUserLocationAnnotationView.h */; }; - DA8848601CBAFC2E00AB86E3 /* Mapbox.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88485E1CBAFC2E00AB86E3 /* Mapbox.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA88488B1CBB037E00AB86E3 /* SMCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848891CBB037E00AB86E3 /* SMCalloutView.h */; }; - DA88488C1CBB037E00AB86E3 /* SMCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88488A1CBB037E00AB86E3 /* SMCalloutView.m */; }; - DA8933A31CCC95B000E68420 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DA89339F1CCC951200E68420 /* Localizable.strings */; }; - DA8933BC1CCD2CA100E68420 /* Foundation.strings in Resources */ = {isa = PBXBuildFile; fileRef = DA8933BA1CCD2CA100E68420 /* Foundation.strings */; }; - DA8933BF1CCD2CAD00E68420 /* Foundation.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DA8933BD1CCD2CAD00E68420 /* Foundation.stringsdict */; }; - DA8933DB1CCD31D400E68420 /* Foundation.strings in Resources */ = {isa = PBXBuildFile; fileRef = DA8933BA1CCD2CA100E68420 /* Foundation.strings */; }; - DA8933DC1CCD31D400E68420 /* Foundation.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DA8933BD1CCD2CAD00E68420 /* Foundation.stringsdict */; }; - DA8933E01CCD31DF00E68420 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DA89339F1CCC951200E68420 /* Localizable.strings */; }; - DA8933F01CCD387900E68420 /* strip-frameworks.sh in Resources */ = {isa = PBXBuildFile; fileRef = DA8933EF1CCD387900E68420 /* strip-frameworks.sh */; }; - DA8963371CC549A100684375 /* glyphs in Resources */ = {isa = PBXBuildFile; fileRef = DA8963331CC549A100684375 /* glyphs */; }; - DA8963381CC549A100684375 /* sprites in Resources */ = {isa = PBXBuildFile; fileRef = DA8963341CC549A100684375 /* sprites */; }; - DA8963391CC549A100684375 /* styles in Resources */ = {isa = PBXBuildFile; fileRef = DA8963351CC549A100684375 /* styles */; }; - DA89633A1CC549A100684375 /* tiles in Resources */ = {isa = PBXBuildFile; fileRef = DA8963361CC549A100684375 /* tiles */; }; - DAA32CC31E4C6B65006F8D24 /* MLNDistanceFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3557F7AF1E1D27D300CCA5E6 /* MLNDistanceFormatter.m */; }; - DAA4227E2429771D008457DB /* MLNMapSnapshotterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DAA4227D2429771D008457DB /* MLNMapSnapshotterTests.m */; }; - DAA4E4081CBB6C9500178DFB /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; }; - DAA4E4091CBB6C9500178DFB /* Mapbox.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - DAA4E41C1CBB730400178DFB /* MLNSettings.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848001CBAFA6200AB86E3 /* MLNSettings.mm */; }; - DAA4E41D1CBB730400178DFB /* MLNGeometry.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848021CBAFA6200AB86E3 /* MLNGeometry.mm */; }; - DAA4E41E1CBB730400178DFB /* MLNMapCamera.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848031CBAFA6200AB86E3 /* MLNMapCamera.mm */; }; - DAA4E41F1CBB730400178DFB /* MLNMultiPoint.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848051CBAFA6200AB86E3 /* MLNMultiPoint.mm */; }; - DAA4E4201CBB730400178DFB /* MLNOfflinePack.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848071CBAFA6200AB86E3 /* MLNOfflinePack.mm */; }; - DAA4E4211CBB730400178DFB /* MLNOfflineStorage.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480A1CBAFA6200AB86E3 /* MLNOfflineStorage.mm */; }; - DAA4E4221CBB730400178DFB /* MLNPointAnnotation.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480B1CBAFA6200AB86E3 /* MLNPointAnnotation.mm */; }; - DAA4E4231CBB730400178DFB /* MLNPolygon.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480C1CBAFA6200AB86E3 /* MLNPolygon.mm */; }; - DAA4E4241CBB730400178DFB /* MLNPolyline.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480D1CBAFA6200AB86E3 /* MLNPolyline.mm */; }; - DAA4E4251CBB730400178DFB /* MLNShape.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480E1CBAFA6200AB86E3 /* MLNShape.mm */; }; - DAA4E4261CBB730400178DFB /* MLNStyle.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88480F1CBAFA6200AB86E3 /* MLNStyle.mm */; }; - DAA4E4271CBB730400178DFB /* MLNTilePyramidOfflineRegion.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848101CBAFA6200AB86E3 /* MLNTilePyramidOfflineRegion.mm */; }; - DAA4E4281CBB730400178DFB /* MLNTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848111CBAFA6200AB86E3 /* MLNTypes.m */; }; - DAA4E4291CBB730400178DFB /* NSBundle+MLNAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8848131CBAFA6200AB86E3 /* NSBundle+MLNAdditions.mm */; }; - DAA4E42B1CBB730400178DFB /* NSString+MLNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848181CBAFA6200AB86E3 /* NSString+MLNAdditions.m */; }; - DAA4E42D1CBB730400178DFB /* MLNAnnotationImage.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848411CBAFB9800AB86E3 /* MLNAnnotationImage.m */; }; - DAA4E42F1CBB730400178DFB /* MLNCompactCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA8848451CBAFB9800AB86E3 /* MLNCompactCalloutView.m */; }; - DAA4E4321CBB730400178DFB /* MLNMapView.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA88484A1CBAFB9800AB86E3 /* MLNMapView.mm */; }; - DAA4E4331CBB730400178DFB /* MLNUserLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88484C1CBAFB9800AB86E3 /* MLNUserLocation.m */; }; - DAA4E4351CBB730400178DFB /* SMCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = DA88488A1CBB037E00AB86E3 /* SMCalloutView.m */; }; - DAAF722B1DA903C700312FA4 /* MLNStyleValue.h in Headers */ = {isa = PBXBuildFile; fileRef = DAAF72291DA903C700312FA4 /* MLNStyleValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DAAF722C1DA903C700312FA4 /* MLNStyleValue.h in Headers */ = {isa = PBXBuildFile; fileRef = DAAF72291DA903C700312FA4 /* MLNStyleValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DAAF722D1DA903C700312FA4 /* MLNStyleValue_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAAF722A1DA903C700312FA4 /* MLNStyleValue_Private.h */; }; - DAAF722E1DA903C700312FA4 /* MLNStyleValue_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAAF722A1DA903C700312FA4 /* MLNStyleValue_Private.h */; }; - DABCABAC1CB80692000A7C39 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DABCABAB1CB80692000A7C39 /* main.m */; }; - DABCABAF1CB80692000A7C39 /* MBXBenchAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DABCABAE1CB80692000A7C39 /* MBXBenchAppDelegate.m */; }; - DABCABB21CB80692000A7C39 /* MBXBenchViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = DABCABB11CB80692000A7C39 /* MBXBenchViewController.mm */; }; - DABCABB71CB80692000A7C39 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DABCABB61CB80692000A7C39 /* Assets.xcassets */; }; - DABCABBA1CB80692000A7C39 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DABCABB81CB80692000A7C39 /* LaunchScreen.storyboard */; }; - DABCABC21CB8071D000A7C39 /* locations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DABCABBF1CB80717000A7C39 /* locations.cpp */; }; - DABFB85D1CBE99E500D62B32 /* MLNSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847DF1CBAFA5100AB86E3 /* MLNSettings.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB85E1CBE99E500D62B32 /* MLNAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E01CBAFA5100AB86E3 /* MLNAnnotation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB85F1CBE99E500D62B32 /* MLNGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E11CBAFA5100AB86E3 /* MLNGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB8601CBE99E500D62B32 /* MLNMapCamera.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E21CBAFA5100AB86E3 /* MLNMapCamera.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB8611CBE99E500D62B32 /* MLNMultiPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E31CBAFA5100AB86E3 /* MLNMultiPoint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB8621CBE99E500D62B32 /* MLNOfflinePack.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E41CBAFA5100AB86E3 /* MLNOfflinePack.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB8631CBE99E500D62B32 /* MLNOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E51CBAFA5100AB86E3 /* MLNOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB8641CBE99E500D62B32 /* MLNOfflineStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E61CBAFA5100AB86E3 /* MLNOfflineStorage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB8651CBE99E500D62B32 /* MLNOverlay.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E71CBAFA5100AB86E3 /* MLNOverlay.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB8661CBE99E500D62B32 /* MLNPointAnnotation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E81CBAFA5100AB86E3 /* MLNPointAnnotation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB8671CBE99E500D62B32 /* MLNPolygon.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847E91CBAFA5100AB86E3 /* MLNPolygon.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB8681CBE99E500D62B32 /* MLNPolyline.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EA1CBAFA5100AB86E3 /* MLNPolyline.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB8691CBE99E500D62B32 /* MLNShape.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EB1CBAFA5100AB86E3 /* MLNShape.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB86A1CBE99E500D62B32 /* MLNStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EC1CBAFA5100AB86E3 /* MLNStyle.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB86B1CBE99E500D62B32 /* MLNTilePyramidOfflineRegion.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847ED1CBAFA5100AB86E3 /* MLNTilePyramidOfflineRegion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB86C1CBE99E500D62B32 /* MLNTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8847EE1CBAFA5100AB86E3 /* MLNTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB86D1CBE9A0F00D62B32 /* MLNAnnotationImage.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848341CBAFB8500AB86E3 /* MLNAnnotationImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB86E1CBE9A0F00D62B32 /* MLNCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848351CBAFB8500AB86E3 /* MLNCalloutView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB86F1CBE9A0F00D62B32 /* MLNMapView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848361CBAFB8500AB86E3 /* MLNMapView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB8701CBE9A0F00D62B32 /* MLNMapView+IBAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848371CBAFB8500AB86E3 /* MLNMapView+IBAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB8721CBE9A0F00D62B32 /* MLNUserLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8848391CBAFB8500AB86E3 /* MLNUserLocation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DABFB8731CBE9A9900D62B32 /* Mapbox.h in Headers */ = {isa = PBXBuildFile; fileRef = DA88485E1CBAFC2E00AB86E3 /* Mapbox.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DAC25FCC200FD83F009BE98E /* NSExpression+MLNPrivateAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC25FCB200FD83E009BE98E /* NSExpression+MLNPrivateAdditions.h */; }; - DAC25FCD200FD83F009BE98E /* NSExpression+MLNPrivateAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC25FCB200FD83E009BE98E /* NSExpression+MLNPrivateAdditions.h */; }; - DAC49C5C1CD02BC9009E1AA3 /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DAC49C5F1CD02BC9009E1AA3 /* Localizable.stringsdict */; }; - DAC49C5D1CD02BC9009E1AA3 /* Localizable.stringsdict in Resources */ = {isa = PBXBuildFile; fileRef = DAC49C5F1CD02BC9009E1AA3 /* Localizable.stringsdict */; }; - DAC8A48024527EDC00C795BB /* glyphs.pbf in Resources */ = {isa = PBXBuildFile; fileRef = DAC8A47F24527EDB00C795BB /* glyphs.pbf */; }; - DAC8A4822452971B00C795BB /* mixed.json in Resources */ = {isa = PBXBuildFile; fileRef = DAC8A4812452971B00C795BB /* mixed.json */; }; - DACA86262019218600E9693A /* MLNRasterDEMSource.h in Headers */ = {isa = PBXBuildFile; fileRef = DACA86242019218500E9693A /* MLNRasterDEMSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DACA86272019218600E9693A /* MLNRasterDEMSource.h in Headers */ = {isa = PBXBuildFile; fileRef = DACA86242019218500E9693A /* MLNRasterDEMSource.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DACA86282019218600E9693A /* MLNRasterDEMSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = DACA86252019218500E9693A /* MLNRasterDEMSource.mm */; }; - DACA86292019218600E9693A /* MLNRasterDEMSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = DACA86252019218500E9693A /* MLNRasterDEMSource.mm */; }; - DAD1656C1CF41981001FF4B9 /* MLNFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD165691CF41981001FF4B9 /* MLNFeature.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DAD1656D1CF41981001FF4B9 /* MLNFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD165691CF41981001FF4B9 /* MLNFeature.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DAD1656E1CF41981001FF4B9 /* MLNFeature_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD1656A1CF41981001FF4B9 /* MLNFeature_Private.h */; }; - DAD165701CF41981001FF4B9 /* MLNFeature.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAD1656B1CF41981001FF4B9 /* MLNFeature.mm */; }; - DAD165711CF41981001FF4B9 /* MLNFeature.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAD1656B1CF41981001FF4B9 /* MLNFeature.mm */; }; - DAD165781CF4CDFF001FF4B9 /* MLNShapeCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD165761CF4CDFF001FF4B9 /* MLNShapeCollection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DAD165791CF4CDFF001FF4B9 /* MLNShapeCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = DAD165761CF4CDFF001FF4B9 /* MLNShapeCollection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DAD1657A1CF4CDFF001FF4B9 /* MLNShapeCollection.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAD165771CF4CDFF001FF4B9 /* MLNShapeCollection.mm */; }; - DAD1657B1CF4CDFF001FF4B9 /* MLNShapeCollection.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAD165771CF4CDFF001FF4B9 /* MLNShapeCollection.mm */; }; - DAE7DEC21E245455007505A6 /* MLNNSStringAdditionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DAE7DEC11E245455007505A6 /* MLNNSStringAdditionsTests.m */; }; - DAED38631D62D0FC00D7640F /* NSURL+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DAED38611D62D0FC00D7640F /* NSURL+MLNAdditions.h */; }; - DAED38641D62D0FC00D7640F /* NSURL+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DAED38611D62D0FC00D7640F /* NSURL+MLNAdditions.h */; }; - DAED38651D62D0FC00D7640F /* NSURL+MLNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DAED38621D62D0FC00D7640F /* NSURL+MLNAdditions.m */; }; - DAED38661D62D0FC00D7640F /* NSURL+MLNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DAED38621D62D0FC00D7640F /* NSURL+MLNAdditions.m */; }; - DAEDC4341D603417000224FF /* MLNAttributionInfoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DAEDC4331D603417000224FF /* MLNAttributionInfoTests.m */; }; - DAF0D8101DFE0EA000B28378 /* MLNRasterTileSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF0D80F1DFE0EA000B28378 /* MLNRasterTileSource_Private.h */; }; - DAF0D8111DFE0EA000B28378 /* MLNRasterTileSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF0D80F1DFE0EA000B28378 /* MLNRasterTileSource_Private.h */; }; - DAF0D8131DFE0EC500B28378 /* MLNVectorTileSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF0D8121DFE0EC500B28378 /* MLNVectorTileSource_Private.h */; }; - DAF0D8141DFE0EC500B28378 /* MLNVectorTileSource_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF0D8121DFE0EC500B28378 /* MLNVectorTileSource_Private.h */; }; - DAF0D8181DFE6B2800B28378 /* MLNAttributionInfo_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF0D8171DFE6B2800B28378 /* MLNAttributionInfo_Private.h */; }; - DAF0D8191DFE6B2800B28378 /* MLNAttributionInfo_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF0D8171DFE6B2800B28378 /* MLNAttributionInfo_Private.h */; }; - DAF25719201901E200367EF5 /* MLNHillshadeStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAF25717201901E100367EF5 /* MLNHillshadeStyleLayer.mm */; }; - DAF2571A201901E200367EF5 /* MLNHillshadeStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAF25717201901E100367EF5 /* MLNHillshadeStyleLayer.mm */; }; - DAF2571B201901E200367EF5 /* MLNHillshadeStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF25718201901E200367EF5 /* MLNHillshadeStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DAF2571C201901E200367EF5 /* MLNHillshadeStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DAF25718201901E200367EF5 /* MLNHillshadeStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DAF25720201902BC00367EF5 /* MLNHillshadeStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAF2571F201902BB00367EF5 /* MLNHillshadeStyleLayerTests.mm */; }; - DD0902A91DB1929D00C5BDCE /* MLNNetworkConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = DD0902A21DB18DE700C5BDCE /* MLNNetworkConfiguration.mm */; }; - DD0902AA1DB1929D00C5BDCE /* MLNNetworkConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = DD0902A21DB18DE700C5BDCE /* MLNNetworkConfiguration.mm */; }; - DD0902AB1DB192A800C5BDCE /* MLNNetworkConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = DD0902A41DB18F1B00C5BDCE /* MLNNetworkConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DD4823751D94AE6C00EB71B7 /* fill_filter_style.json in Resources */ = {isa = PBXBuildFile; fileRef = DD4823721D94AE6C00EB71B7 /* fill_filter_style.json */; }; - DD4823761D94AE6C00EB71B7 /* line_filter_style.json in Resources */ = {isa = PBXBuildFile; fileRef = DD4823731D94AE6C00EB71B7 /* line_filter_style.json */; }; - DD4823771D94AE6C00EB71B7 /* numeric_filter_style.json in Resources */ = {isa = PBXBuildFile; fileRef = DD4823741D94AE6C00EB71B7 /* numeric_filter_style.json */; }; - DD58A4C61D822BD000E1F038 /* MLNExpressionTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DD58A4C51D822BD000E1F038 /* MLNExpressionTests.mm */; }; - DD9BE4F71EB263C50079A3AF /* UIViewController+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DD9BE4F51EB263C50079A3AF /* UIViewController+MLNAdditions.h */; }; - DD9BE4F81EB263C50079A3AF /* UIViewController+MLNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DD9BE4F61EB263C50079A3AF /* UIViewController+MLNAdditions.m */; }; - DD9BE4F91EB263D20079A3AF /* UIViewController+MLNAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DD9BE4F51EB263C50079A3AF /* UIViewController+MLNAdditions.h */; }; - DD9BE4FA1EB263F40079A3AF /* UIViewController+MLNAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DD9BE4F61EB263C50079A3AF /* UIViewController+MLNAdditions.m */; }; - FA68F14A1E9D656600F9F6C2 /* MLNFillExtrusionStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = FA68F1481E9D656600F9F6C2 /* MLNFillExtrusionStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FA68F14B1E9D656600F9F6C2 /* MLNFillExtrusionStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = FA68F1481E9D656600F9F6C2 /* MLNFillExtrusionStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FA68F14D1E9D656600F9F6C2 /* MLNFillExtrusionStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = FA68F1491E9D656600F9F6C2 /* MLNFillExtrusionStyleLayer.mm */; }; - FA68F14E1E9D656600F9F6C2 /* MLNFillExtrusionStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = FA68F1491E9D656600F9F6C2 /* MLNFillExtrusionStyleLayer.mm */; }; - FAE1CDCB1E9D79CB00C40B5B /* MLNFillExtrusionStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = FAE1CDC81E9D79C600C40B5B /* MLNFillExtrusionStyleLayerTests.mm */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 165D0CE520005351009A3C66 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */; - proxyType = 1; - remoteGlobalIDString = DA8847D11CBAF91600AB86E3; - remoteInfo = dynamic; - }; - CA94E5FD237D21030037AEA0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */; - proxyType = 1; - remoteGlobalIDString = DA8847D11CBAF91600AB86E3; - remoteInfo = dynamic; - }; - CABE5DAB2072FA660003AF3C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */; - proxyType = 1; - remoteGlobalIDString = 16376B2E1FFDB4B40000563E; - remoteInfo = "Integration Test Harness"; - }; - D717FE7C25F1955A0054E06E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */; - proxyType = 1; - remoteGlobalIDString = DA1DC9491CB6C1C2006E619F; - remoteInfo = iosapp; - }; - D7E7CE8A25F2EF6A00C175FC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */; - proxyType = 1; - remoteGlobalIDString = DABCABA71CB80692000A7C39; - remoteInfo = bench; - }; - DA25D5C91CCDA0CC00607828 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */; - proxyType = 1; - remoteGlobalIDString = DA8933D41CCD306400E68420; - remoteInfo = bundle; - }; - DA2E88571CC036F400F24E7B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */; - proxyType = 1; - remoteGlobalIDString = DA8847D11CBAF91600AB86E3; - remoteInfo = dynamic; - }; - DAA4E40A1CBB6C9500178DFB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DA1DC9421CB6C1C2006E619F /* Project object */; - proxyType = 1; - remoteGlobalIDString = DA8847D11CBAF91600AB86E3; - remoteInfo = framework; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - CA0FA9E62379C39C00C9F3C9 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - CA94E5FC237D21030037AEA0 /* Mapbox.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; - CAA69DA6206DCD0E007279CD /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - CAA69DA5206DCD0E007279CD /* Mapbox.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; - DAA4E40C1CBB6C9600178DFB /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - DAA4E4091CBB6C9500178DFB /* Mapbox.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; - DAA4E4111CBB71D400178DFB /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 071BBAFC1EE75CD4001FB02A /* MLNImageSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNImageSource.h; sourceTree = ""; }; - 071BBAFD1EE75CD4001FB02A /* MLNImageSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNImageSource.mm; sourceTree = ""; }; - 071BBB051EE7761A001FB02A /* MLNImageSourceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MLNImageSourceTests.m; path = ../../darwin/test/MLNImageSourceTests.m; sourceTree = ""; }; - 074A7F0C2277C093001A62D1 /* insert_access_token.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = insert_access_token.sh; sourceTree = ""; }; - 075AF840227B6762008D7A4C /* MBXState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXState.h; sourceTree = ""; }; - 075AF841227B6762008D7A4C /* MBXState.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MBXState.m; sourceTree = ""; }; - 075AF843227B67C5008D7A4C /* MBXStateManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXStateManager.h; sourceTree = ""; }; - 075AF844227B67C6008D7A4C /* MBXStateManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MBXStateManager.m; sourceTree = ""; }; - 076171C22139C70900668A35 /* MLNMapViewTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MLNMapViewTests.m; path = ../../darwin/test/MLNMapViewTests.m; sourceTree = ""; }; - 076171C62141A91700668A35 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = Settings.bundle; path = app/Settings.bundle; sourceTree = SOURCE_ROOT; }; - 077061D9215DA00E000FEF62 /* MLNTestLocationManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MLNTestLocationManager.m; sourceTree = ""; }; - 077061DB215DA11F000FEF62 /* MLNTestLocationManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MLNTestLocationManager.h; sourceTree = ""; }; - 0778DD401F67555F00A73B34 /* MLNComputedShapeSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNComputedShapeSource.h; sourceTree = ""; }; - 0778DD411F67555F00A73B34 /* MLNComputedShapeSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNComputedShapeSource.mm; sourceTree = ""; }; - 07D8C6FD1F67562800381808 /* MLNComputedShapeSourceTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MLNComputedShapeSourceTests.m; path = ../../darwin/test/MLNComputedShapeSourceTests.m; sourceTree = ""; }; - 07D9474E1F67487E00E37934 /* MLNComputedShapeSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNComputedShapeSource_Private.h; sourceTree = ""; }; - 16376B071FFD9DAF0000563E /* integration.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = integration.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 16376B091FFD9DAF0000563E /* MBGLIntegrationTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MBGLIntegrationTests.mm; sourceTree = ""; }; - 16376B0B1FFD9DAF0000563E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 16376B2F1FFDB4B40000563E /* Integration Test Harness.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Integration Test Harness.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 16376B311FFDB4B40000563E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 16376B321FFDB4B40000563E /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 16376B3A1FFDB4B40000563E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 16376B3D1FFDB4B40000563E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 16376B3F1FFDB4B40000563E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 16376B401FFDB4B40000563E /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - 16376B481FFEED010000563E /* MLNMapViewLayoutTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MLNMapViewLayoutTests.m; sourceTree = ""; }; - 170C43782028D49800863DF0 /* MLNHeatmapColorTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNHeatmapColorTests.mm; path = ../../darwin/test/MLNHeatmapColorTests.mm; sourceTree = ""; }; - 170C43792028D49800863DF0 /* MLNHeatmapStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNHeatmapStyleLayerTests.mm; path = ../../darwin/test/MLNHeatmapStyleLayerTests.mm; sourceTree = ""; }; - 1753ED411E53CE6F00A9FD90 /* MLNConversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNConversion.h; sourceTree = ""; }; - 1F0196A923174B0700F5C819 /* MLNMapViewContentInsetTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MLNMapViewContentInsetTests.m; sourceTree = ""; }; - 1F0666881EC64F8E001C16D7 /* MLNLight.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNLight.h; sourceTree = ""; }; - 1F0666891EC64F8E001C16D7 /* MLNLight.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNLight.mm; sourceTree = ""; }; - 1F26B6BF20E189C9007BCC21 /* MBXCustomLocationViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXCustomLocationViewController.h; sourceTree = ""; }; - 1F26B6C020E189C9007BCC21 /* MBXCustomLocationViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MBXCustomLocationViewController.m; sourceTree = ""; }; - 1F26B6C220E1A351007BCC21 /* simple_route.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = simple_route.json; sourceTree = ""; }; - 1F2B94BF221636D800210640 /* MLNNetworkConfiguration_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MLNNetworkConfiguration_Private.h; sourceTree = ""; }; - 1F6A82A021360F9C00BA5B41 /* MLNLoggingConfiguration.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MLNLoggingConfiguration.h; sourceTree = ""; }; - 1F6A82A62138871900BA5B41 /* MLNLoggingConfiguration_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MLNLoggingConfiguration_Private.h; sourceTree = ""; }; - 1F7454941ECD450D00021D39 /* MLNLight_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNLight_Private.h; sourceTree = ""; }; - 1F7454A61ED08AB400021D39 /* MLNLightTest.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNLightTest.mm; path = ../../darwin/test/MLNLightTest.mm; sourceTree = ""; }; - 1F78399D235AA1E600D4D606 /* libmbgl-core.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libmbgl-core.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 1F7839A3235E11FC00D4D606 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; }; - 1F7839A5235E137000D4D606 /* sideload_sat.db */ = {isa = PBXFileReference; lastKnownFileType = file; name = sideload_sat.db; path = ../../../../test/fixtures/offline_database/sideload_sat.db; sourceTree = ""; }; - 1F8E8A80233A9FD9009B51ED /* MLNMapViewGestureRecognizerTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNMapViewGestureRecognizerTests.mm; sourceTree = ""; }; - 1F95931C1E6DE2E900D5B294 /* MLNNSDateAdditionsTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNNSDateAdditionsTests.mm; path = ../../darwin/test/MLNNSDateAdditionsTests.mm; sourceTree = ""; }; - 1FC4817B2098CBC0000D09B4 /* NSPredicate+MLNPrivateAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSPredicate+MLNPrivateAdditions.h"; sourceTree = ""; }; - 1FCAE2A020B872A400C577DD /* MLNLocationManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MLNLocationManager.h; sourceTree = ""; }; - 1FCAE2A120B872A400C577DD /* MLNLocationManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MLNLocationManager.m; sourceTree = ""; }; - 1FCAE2A620B88B3800C577DD /* MLNLocationManager_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MLNLocationManager_Private.h; sourceTree = ""; }; - 1FDB00C721F8F14E00D21389 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = ""; }; - 1FDB00C821F8F14F00D21389 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Foundation.strings; sourceTree = ""; }; - 1FDB00C921F8F15000D21389 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = cs; path = cs.lproj/Foundation.stringsdict; sourceTree = ""; }; - 1FDB00CA21F8F15100D21389 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = ""; }; - 1FDB00CB21F8F15300D21389 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = cs; path = cs.lproj/Localizable.stringsdict; sourceTree = ""; }; - 1FF48585223710BE00F19727 /* MLNAttributedExpression.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MLNAttributedExpression.h; sourceTree = ""; }; - 1FF48586223710BE00F19727 /* MLNAttributedExpression.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MLNAttributedExpression.m; sourceTree = ""; }; - 20DABE861DF78148007AC5FF /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Foundation.strings"; sourceTree = ""; }; - 20DABE881DF78148007AC5FF /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; - 30E578111DAA7D690050F07E /* UIImage+MLNAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIImage+MLNAdditions.h"; path = "src/UIImage+MLNAdditions.h"; sourceTree = SOURCE_ROOT; }; - 30E578121DAA7D690050F07E /* UIImage+MLNAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = "UIImage+MLNAdditions.mm"; path = "src/UIImage+MLNAdditions.mm"; sourceTree = SOURCE_ROOT; }; - 350098B91D480108004B2AF0 /* MLNVectorTileSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNVectorTileSource.h; sourceTree = ""; }; - 350098BA1D480108004B2AF0 /* MLNVectorTileSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNVectorTileSource.mm; sourceTree = ""; }; - 350098DA1D484E60004B2AF0 /* NSValue+MLNStyleAttributeAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSValue+MLNStyleAttributeAdditions.h"; sourceTree = ""; }; - 350098DB1D484E60004B2AF0 /* NSValue+MLNStyleAttributeAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSValue+MLNStyleAttributeAdditions.mm"; sourceTree = ""; }; - 3510FFE81D6D9C7A00F413B2 /* NSComparisonPredicate+MLNAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSComparisonPredicate+MLNAdditions.h"; sourceTree = ""; }; - 3510FFE91D6D9C7A00F413B2 /* NSComparisonPredicate+MLNAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSComparisonPredicate+MLNAdditions.mm"; sourceTree = ""; }; - 3510FFEE1D6D9D8C00F413B2 /* NSExpression+MLNAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSExpression+MLNAdditions.h"; sourceTree = ""; }; - 3510FFEF1D6D9D8C00F413B2 /* NSExpression+MLNAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSExpression+MLNAdditions.mm"; sourceTree = ""; }; - 3510FFF71D6DCC4700F413B2 /* NSCompoundPredicate+MLNAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSCompoundPredicate+MLNAdditions.h"; sourceTree = ""; }; - 3510FFF81D6DCC4700F413B2 /* NSCompoundPredicate+MLNAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSCompoundPredicate+MLNAdditions.mm"; sourceTree = ""; }; - 35136D381D42271A00C20EFD /* MLNBackgroundStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNBackgroundStyleLayer.mm; sourceTree = ""; }; - 35136D3B1D42272500C20EFD /* MLNCircleStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNCircleStyleLayer.mm; sourceTree = ""; }; - 35136D3E1D42273000C20EFD /* MLNLineStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNLineStyleLayer.mm; sourceTree = ""; }; - 35136D411D42274500C20EFD /* MLNRasterStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNRasterStyleLayer.mm; sourceTree = ""; }; - 35136D441D42275100C20EFD /* MLNSymbolStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNSymbolStyleLayer.mm; sourceTree = ""; }; - 35136D4A1D4277FC00C20EFD /* MLNSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNSource.h; sourceTree = ""; }; - 35136D4B1D4277FC00C20EFD /* MLNSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNSource.mm; sourceTree = ""; }; - 3538AA1B1D542239008EC33D /* MLNForegroundStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNForegroundStyleLayer.h; sourceTree = ""; }; - 3538AA1C1D542239008EC33D /* MLNForegroundStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNForegroundStyleLayer.mm; sourceTree = ""; }; - 353933F11D3FB753003F57D7 /* MLNCircleStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNCircleStyleLayer.h; sourceTree = ""; }; - 353933F41D3FB785003F57D7 /* MLNBackgroundStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNBackgroundStyleLayer.h; sourceTree = ""; }; - 353933F71D3FB79F003F57D7 /* MLNLineStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNLineStyleLayer.h; sourceTree = ""; }; - 353933FA1D3FB7C0003F57D7 /* MLNRasterStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNRasterStyleLayer.h; sourceTree = ""; }; - 353933FD1D3FB7DD003F57D7 /* MLNSymbolStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNSymbolStyleLayer.h; sourceTree = ""; }; - 353AFA121D65AB17005A69F4 /* NSDate+MLNAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+MLNAdditions.h"; sourceTree = ""; }; - 353AFA131D65AB17005A69F4 /* NSDate+MLNAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSDate+MLNAdditions.mm"; sourceTree = ""; }; - 353BAEF51D646370009A8DA9 /* amsterdam.geojson */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = amsterdam.geojson; path = ../../darwin/test/amsterdam.geojson; sourceTree = ""; }; - 353D23951D0B0DFE002BE09D /* MLNAnnotationViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNAnnotationViewTests.m; sourceTree = ""; }; - 354B83941D2E873E005D9406 /* MLNUserLocationAnnotationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNUserLocationAnnotationView.h; sourceTree = ""; }; - 354B83951D2E873E005D9406 /* MLNUserLocationAnnotationView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNUserLocationAnnotationView.m; sourceTree = ""; }; - 354B839A1D2E9B48005D9406 /* MBXUserLocationAnnotationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXUserLocationAnnotationView.h; sourceTree = ""; }; - 354B839B1D2E9B48005D9406 /* MBXUserLocationAnnotationView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXUserLocationAnnotationView.m; sourceTree = ""; }; - 3557F7AE1E1D27D300CCA5E6 /* MLNDistanceFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNDistanceFormatter.h; sourceTree = ""; }; - 3557F7AF1E1D27D300CCA5E6 /* MLNDistanceFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNDistanceFormatter.m; sourceTree = ""; }; - 35599DEA1D46F14E0048254D /* MLNStyleValue.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNStyleValue.mm; sourceTree = ""; }; - 355ADFFB1E9281DA00F3939D /* MLNScaleBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNScaleBar.h; sourceTree = ""; }; - 355ADFFC1E9281DA00F3939D /* MLNScaleBar.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNScaleBar.mm; sourceTree = ""; }; - 3566C7641D4A77BA008152BC /* MLNShapeSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNShapeSource.h; sourceTree = ""; }; - 3566C7651D4A77BA008152BC /* MLNShapeSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNShapeSource.mm; sourceTree = ""; }; - 3566C76A1D4A8DFA008152BC /* MLNRasterTileSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNRasterTileSource.h; sourceTree = ""; }; - 3566C76B1D4A8DFA008152BC /* MLNRasterTileSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNRasterTileSource.mm; sourceTree = ""; }; - 3566C7701D4A9198008152BC /* MLNSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNSource_Private.h; sourceTree = ""; }; - 3575797F1D501E09000B822E /* MLNFillStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNFillStyleLayerTests.mm; path = ../../darwin/test/MLNFillStyleLayerTests.mm; sourceTree = ""; }; - 357579821D502AE6000B822E /* MLNRasterStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNRasterStyleLayerTests.mm; path = ../../darwin/test/MLNRasterStyleLayerTests.mm; sourceTree = ""; }; - 357579841D502AF5000B822E /* MLNSymbolStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNSymbolStyleLayerTests.mm; path = ../../darwin/test/MLNSymbolStyleLayerTests.mm; sourceTree = ""; }; - 357579861D502AFE000B822E /* MLNLineStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNLineStyleLayerTests.mm; path = ../../darwin/test/MLNLineStyleLayerTests.mm; sourceTree = ""; }; - 357579881D502B06000B822E /* MLNCircleStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNCircleStyleLayerTests.mm; path = ../../darwin/test/MLNCircleStyleLayerTests.mm; sourceTree = ""; }; - 3575798A1D502B0C000B822E /* MLNBackgroundStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNBackgroundStyleLayerTests.mm; path = ../../darwin/test/MLNBackgroundStyleLayerTests.mm; sourceTree = ""; }; - 357FE2DB1E02D2B20068B753 /* NSCoder+MLNAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSCoder+MLNAdditions.h"; path = "../../darwin/src/NSCoder+MLNAdditions.h"; sourceTree = ""; }; - 357FE2DC1E02D2B20068B753 /* NSCoder+MLNAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = "NSCoder+MLNAdditions.mm"; path = "../../darwin/src/NSCoder+MLNAdditions.mm"; sourceTree = ""; }; - 358B3DB82359E491007BEB26 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/lib/libsqlite3.tbd; sourceTree = DEVELOPER_DIR; }; - 358B3DBA2359EA0F007BEB26 /* libmbgl-vendor-icu.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libmbgl-vendor-icu.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3598544C1E1D38AA00B29F84 /* MLNDistanceFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MLNDistanceFormatterTests.m; path = ../../darwin/test/MLNDistanceFormatterTests.m; sourceTree = ""; }; - 359F57451D2FDBD5005217F1 /* MLNUserLocationAnnotationView_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNUserLocationAnnotationView_Private.h; sourceTree = ""; }; - 35B82BF61D6C5F8400B1B721 /* NSPredicate+MLNAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSPredicate+MLNAdditions.h"; sourceTree = ""; }; - 35B82BF71D6C5F8400B1B721 /* NSPredicate+MLNAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSPredicate+MLNAdditions.mm"; sourceTree = ""; }; - 35B8E08B1D6C8B5100E768D2 /* MLNPredicateTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNPredicateTests.mm; path = ../../darwin/test/MLNPredicateTests.mm; sourceTree = ""; }; - 35CE61801D4165D9004F2359 /* UIColor+MLNAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIColor+MLNAdditions.h"; sourceTree = ""; }; - 35CE61811D4165D9004F2359 /* UIColor+MLNAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "UIColor+MLNAdditions.mm"; sourceTree = ""; }; - 35D13AB51D3D15E300AFB4E0 /* MLNStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNStyleLayer.h; sourceTree = ""; }; - 35D13AB61D3D15E300AFB4E0 /* MLNStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNStyleLayer.mm; sourceTree = ""; }; - 35D13AC11D3D19DD00AFB4E0 /* MLNFillStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNFillStyleLayer.h; sourceTree = ""; }; - 35D13AC21D3D19DD00AFB4E0 /* MLNFillStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNFillStyleLayer.mm; sourceTree = ""; }; - 35D9DDE11DA25EEC00DAAD69 /* MLNCodingTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNCodingTests.mm; path = ../../darwin/test/MLNCodingTests.mm; sourceTree = ""; }; - 35DE35531EB7CBA8004917C5 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = sv; path = sv.lproj/Localizable.stringsdict; sourceTree = ""; }; - 35E0CFE51D3E501500188327 /* MLNStyle_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNStyle_Private.h; sourceTree = ""; }; - 35E1A4D71D74336F007AA97F /* MLNValueEvaluator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNValueEvaluator.h; sourceTree = ""; }; - 35E79F1F1D41266300957B9E /* MLNStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNStyleLayer_Private.h; sourceTree = ""; }; - 3E6465D42065767A00685536 /* LimeGreenStyleLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LimeGreenStyleLayer.m; path = ../../darwin/app/LimeGreenStyleLayer.m; sourceTree = ""; }; - 3E6465D52065767A00685536 /* LimeGreenStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LimeGreenStyleLayer.h; path = ../../darwin/app/LimeGreenStyleLayer.h; sourceTree = ""; }; - 3EA931BC4F087E166D538F21 /* MLNRendererConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNRendererConfiguration.m; sourceTree = ""; }; - 3EA9337830C7738BF7F5493C /* MLNRendererConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNRendererConfiguration.h; sourceTree = ""; }; - 400532FF1DB0862B0069F638 /* NSArray+MLNAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+MLNAdditions.h"; sourceTree = ""; }; - 400533001DB0862B0069F638 /* NSArray+MLNAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSArray+MLNAdditions.mm"; sourceTree = ""; }; - 4018B1C31CDC277F00F666AF /* MLNAnnotationView_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNAnnotationView_Private.h; sourceTree = ""; }; - 4018B1C41CDC277F00F666AF /* MLNAnnotationView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNAnnotationView.mm; sourceTree = ""; }; - 4018B1C51CDC277F00F666AF /* MLNAnnotationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNAnnotationView.h; sourceTree = ""; }; - 402E9DE01CD2C76200FD4519 /* Mapbox.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = Mapbox.playground; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; - 4031ACFE1E9FD29F00A3EA26 /* MLNSDKTestHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MLNSDKTestHelpers.swift; path = ../../darwin/test/MLNSDKTestHelpers.swift; sourceTree = ""; }; - 404326881D5B9B1A007111BD /* MLNAnnotationContainerView_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNAnnotationContainerView_Private.h; sourceTree = ""; }; - 4049C29B1DB6CD6C00B3F799 /* MLNPointCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNPointCollection.h; sourceTree = ""; }; - 4049C29C1DB6CD6C00B3F799 /* MLNPointCollection.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNPointCollection.mm; sourceTree = ""; }; - 4049C2AB1DB6E05500B3F799 /* MLNPointCollection_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNPointCollection_Private.h; sourceTree = ""; }; - 404C26E01D89B877000AA13D /* MLNTileSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNTileSource.h; sourceTree = ""; }; - 404C26E11D89B877000AA13D /* MLNTileSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNTileSource.mm; sourceTree = ""; }; - 404C26E61D89C515000AA13D /* MLNTileSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNTileSource_Private.h; sourceTree = ""; }; - 40834AEF1FDF4F0100C1BD0D /* Mapbox-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Mapbox-Prefix.pch"; path = "src/Mapbox-Prefix.pch"; sourceTree = SOURCE_ROOT; }; - 4085AF081D933DEA00F11B22 /* MLNTileSetTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNTileSetTests.mm; path = ../../darwin/test/MLNTileSetTests.mm; sourceTree = ""; }; - 408AA8551DAEDA0800022900 /* NSDictionary+MLNAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+MLNAdditions.h"; sourceTree = ""; }; - 408AA8561DAEDA0800022900 /* NSDictionary+MLNAdditions.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSDictionary+MLNAdditions.mm"; sourceTree = ""; }; - 409D0A0C1ED614CE00C95D0C /* MLNAnnotationViewIntegrationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MLNAnnotationViewIntegrationTests.swift; sourceTree = ""; }; - 409F43FC1E9E781C0048729D /* MLNMapViewDelegateIntegrationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MLNMapViewDelegateIntegrationTests.swift; sourceTree = ""; }; - 40CF6DBA1DAC3C1800A4D18B /* MLNShape_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNShape_Private.h; sourceTree = ""; }; - 40CFA6501D787579008103BD /* MLNShapeSourceTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNShapeSourceTests.mm; path = ../../darwin/test/MLNShapeSourceTests.mm; sourceTree = ""; }; - 40EDA1BD1CFE0D4A00D9EA68 /* MLNAnnotationContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNAnnotationContainerView.h; sourceTree = ""; }; - 40EDA1BE1CFE0D4A00D9EA68 /* MLNAnnotationContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNAnnotationContainerView.m; sourceTree = ""; }; - 40F8876F1D7A1DB8008ECB67 /* MLNShapeSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNShapeSource_Private.h; sourceTree = ""; }; - 40FDA7691CCAAA6800442548 /* MBXAnnotationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXAnnotationView.h; sourceTree = ""; }; - 40FDA76A1CCAAA6800442548 /* MBXAnnotationView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXAnnotationView.m; sourceTree = ""; }; - 4B8A425A2656ED62008E725A /* insert_access_token.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = insert_access_token.sh; sourceTree = ""; }; - 4BAB4DA2264E6DCA00F015C1 /* MLNTileServerOptions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNTileServerOptions.mm; sourceTree = ""; }; - 4BAB4DA3264E6DCA00F015C1 /* MLNTileServerOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNTileServerOptions.h; sourceTree = ""; }; - 4BAB4DAF264E6DE200F015C1 /* MLNDefaultStyle.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNDefaultStyle.mm; sourceTree = ""; }; - 4BAB4DB0264E6DE200F015C1 /* MLNDefaultStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNDefaultStyle.h; sourceTree = ""; }; - 4BC5769125E3D3D6006E06EB /* MLNUserLocationAnnotationViewStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNUserLocationAnnotationViewStyle.h; sourceTree = ""; }; - 4BC5769225E3D3D6006E06EB /* MLNUserLocationAnnotationViewStyle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNUserLocationAnnotationViewStyle.m; sourceTree = ""; }; - 4BC576C825E443CE006E06EB /* MLNFaux3DUserLocationAnnotationView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNFaux3DUserLocationAnnotationView.mm; sourceTree = ""; }; - 550570C422958FB300228ECF /* MLNMapView+Impl.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "MLNMapView+Impl.mm"; sourceTree = ""; }; - 550570C522958FB400228ECF /* MLNMapView+Impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MLNMapView+Impl.h"; sourceTree = ""; }; - 554180411D2E97DE00012372 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; - 556660C91E1BF3A900E2C41B /* MLNFoundation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MLNFoundation.h; sourceTree = ""; wrapsLines = 0; }; - 556660D71E1D085500E2C41B /* MLNVersionNumber.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MLNVersionNumber.m; path = ../../darwin/test/MLNVersionNumber.m; sourceTree = ""; }; - 5580B459229570A00091291B /* MLNMapView+OpenGL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MLNMapView+OpenGL.h"; sourceTree = ""; }; - 5580B45A229570A10091291B /* MLNMapView+OpenGL.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "MLNMapView+OpenGL.mm"; sourceTree = ""; }; - 558DE79E1E5615E400C7916D /* MLNFoundation_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNFoundation_Private.h; sourceTree = ""; }; - 558DE79F1E5615E400C7916D /* MLNFoundation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNFoundation.mm; sourceTree = ""; }; - 55E2AD121E5B125400E8C587 /* MLNOfflineStorageTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNOfflineStorageTests.mm; path = ../../darwin/test/MLNOfflineStorageTests.mm; sourceTree = ""; }; - 5DCC598628888C0B008803DA /* MLNMapView_Experimental.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNMapView_Experimental.h; sourceTree = ""; }; - 632281DD1E6F855900D75A5D /* MBXEmbeddedMapViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXEmbeddedMapViewController.h; sourceTree = ""; }; - 632281DE1E6F855900D75A5D /* MBXEmbeddedMapViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXEmbeddedMapViewController.m; sourceTree = ""; }; - 6407D66F1E0085FD00F6A9C3 /* MLNDocumentationExampleTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MLNDocumentationExampleTests.swift; path = ../../darwin/test/MLNDocumentationExampleTests.swift; sourceTree = ""; }; - 6FA9341521EF372100AA9CA8 /* MBXOrnamentsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXOrnamentsViewController.m; sourceTree = ""; }; - 6FA9341621EF372100AA9CA8 /* MBXOrnamentsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXOrnamentsViewController.h; sourceTree = ""; }; - 6FAFA29A220023840088709E /* UIView+MLNAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIView+MLNAdditions.h"; sourceTree = ""; }; - 6FAFA29B220023840088709E /* UIView+MLNAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIView+MLNAdditions.m"; sourceTree = ""; }; - 74CB5EAF219B252C00102936 /* MLNStyleLayerManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNStyleLayerManager.h; sourceTree = ""; }; - 74CB5EB0219B252C00102936 /* MLNStyleLayerManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNStyleLayerManager.mm; sourceTree = ""; }; - 74CB5EB5219B280300102936 /* MLNHillshadeStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNHillshadeStyleLayer_Private.h; sourceTree = ""; }; - 74CB5EB6219B280300102936 /* MLNFillExtrusionStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNFillExtrusionStyleLayer_Private.h; sourceTree = ""; }; - 74CB5EB7219B280300102936 /* MLNFillStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNFillStyleLayer_Private.h; sourceTree = ""; }; - 74CB5EB8219B280300102936 /* MLNHeatmapStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNHeatmapStyleLayer_Private.h; sourceTree = ""; }; - 74CB5EC1219B282500102936 /* MLNCircleStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNCircleStyleLayer_Private.h; sourceTree = ""; }; - 74CB5EC2219B282500102936 /* MLNBackgroundStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNBackgroundStyleLayer_Private.h; sourceTree = ""; }; - 74CB5EC7219B285000102936 /* MLNLineStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNLineStyleLayer_Private.h; sourceTree = ""; }; - 74CB5EC8219B285000102936 /* MLNOpenGLStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNOpenGLStyleLayer_Private.h; sourceTree = ""; }; - 74CB5EC9219B285000102936 /* MLNRasterStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNRasterStyleLayer_Private.h; sourceTree = ""; }; - 74CB5ED0219B286400102936 /* MLNSymbolStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNSymbolStyleLayer_Private.h; sourceTree = ""; }; - 7914ABB328A5B799007D986B /* CI.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = CI.xctestplan; sourceTree = ""; }; - 7914ABB428A5B92F007D986B /* CI-Expressions.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = "CI-Expressions.xctestplan"; sourceTree = ""; }; - 8989B17A201A48EA0081CF59 /* MLNHeatmapStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNHeatmapStyleLayer.h; sourceTree = ""; }; - 8989B17B201A48EA0081CF59 /* MLNHeatmapStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNHeatmapStyleLayer.mm; sourceTree = ""; }; - 920A3E5C1E6F995200C16EFC /* MLNSourceQueryTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MLNSourceQueryTests.m; path = ../../darwin/test/MLNSourceQueryTests.m; sourceTree = ""; }; - 9221BAAC2069843A0054BDF4 /* MLNTilePyramidOfflineRegion_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNTilePyramidOfflineRegion_Private.h; sourceTree = ""; }; - 927FBCFA1F4DAA8300F8BF1F /* MBXSnapshotsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXSnapshotsViewController.h; sourceTree = ""; }; - 927FBCFB1F4DAA8300F8BF1F /* MBXSnapshotsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXSnapshotsViewController.m; sourceTree = ""; }; - 927FBCFD1F4DB05500F8BF1F /* MLNMapSnapshotter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNMapSnapshotter.h; sourceTree = ""; }; - 927FBCFE1F4DB05500F8BF1F /* MLNMapSnapshotter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNMapSnapshotter.mm; sourceTree = ""; wrapsLines = 0; }; - 92F2C3EC1F0E3C3A00268EC0 /* MLNRendererFrontend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNRendererFrontend.h; sourceTree = ""; }; - 92FC0AE7207CEE16007B6B54 /* MLNShapeOfflineRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNShapeOfflineRegion.h; sourceTree = ""; }; - 92FC0AE8207CEE16007B6B54 /* MLNShapeOfflineRegion_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNShapeOfflineRegion_Private.h; sourceTree = ""; }; - 92FC0AE9207CEE16007B6B54 /* MLNShapeOfflineRegion.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNShapeOfflineRegion.mm; sourceTree = ""; }; - 960369FF200565C700510F3D /* NSOrthography+MLNAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSOrthography+MLNAdditions.h"; sourceTree = ""; }; - 96036A00200565C700510F3D /* NSOrthography+MLNAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSOrthography+MLNAdditions.m"; sourceTree = ""; }; - 96036A0520059BBA00510F3D /* MLNNSOrthographyAdditionsTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MLNNSOrthographyAdditionsTests.m; sourceTree = ""; }; - 960D0C351ECF5AAF008E151F /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - 96381C0122C6F3950053497D /* MLNMapViewPitchTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNMapViewPitchTests.m; sourceTree = ""; }; - 9641771E22D546DA00332422 /* MLNCompassButton_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MLNCompassButton_Private.h; sourceTree = ""; }; - 9654C1251FFC1AB900DB6A19 /* MLNPolyline_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNPolyline_Private.h; sourceTree = ""; }; - 9654C1271FFC1CC000DB6A19 /* MLNPolygon_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNPolygon_Private.h; sourceTree = ""; }; - 9658C154204761FC00D8A674 /* MLNMapViewScaleBarTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MLNMapViewScaleBarTests.m; sourceTree = ""; }; - 965DF50F20F9430500438AAC /* MBXFrameTimeGraphView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXFrameTimeGraphView.h; sourceTree = ""; }; - 965DF51020F9430500438AAC /* MBXFrameTimeGraphView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MBXFrameTimeGraphView.m; sourceTree = ""; }; - 9660916B1E5BBFD700A9A03B /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; - 9660916C1E5BBFD900A9A03B /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = ""; }; - 9660916D1E5BBFDB00A9A03B /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; - 9660916E1E5BBFDC00A9A03B /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Localizable.strings; sourceTree = ""; }; - 9660916F1E5BBFDE00A9A03B /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/Localizable.strings; sourceTree = ""; }; - 966FCF4A1F3A5C9200F2B6DE /* MLNUserLocationHeadingBeamLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNUserLocationHeadingBeamLayer.h; sourceTree = ""; }; - 966FCF4B1F3A5C9200F2B6DE /* MLNUserLocationHeadingBeamLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNUserLocationHeadingBeamLayer.m; sourceTree = ""; }; - 966FCF501F3C321000F2B6DE /* MLNUserLocationHeadingArrowLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNUserLocationHeadingArrowLayer.h; sourceTree = ""; }; - 966FCF511F3C321000F2B6DE /* MLNUserLocationHeadingArrowLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNUserLocationHeadingArrowLayer.m; sourceTree = ""; }; - 967C8649210A9D3C004DF794 /* UIDevice+MLNAdditions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIDevice+MLNAdditions.h"; sourceTree = ""; }; - 967C864A210A9D3C004DF794 /* UIDevice+MLNAdditions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIDevice+MLNAdditions.m"; sourceTree = ""; }; - 9680274122653C3E006BA4A1 /* libmbxaccounts.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmbxaccounts.a; path = "vendor/mapbox-accounts-ios/libmbxaccounts.a"; sourceTree = SOURCE_ROOT; }; - 9686D1BC22D9357700194EA0 /* MLNMapViewZoomTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNMapViewZoomTests.mm; sourceTree = ""; }; - 968F36B41E4D0FC6003A5522 /* ja */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; }; - 96E027241E57C76E004B8E66 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = ""; }; - 96E027271E57C77A004B8E66 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Localizable.strings; sourceTree = ""; }; - 96E027281E57C7DB004B8E66 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; - 96E027291E57C7DE004B8E66 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = ""; }; - 96E0272A1E57C7DF004B8E66 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; - 96E0272B1E57C7E3004B8E66 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = ""; }; - 96E0272C1E57C7E5004B8E66 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; - 96E0272D1E57C7E6004B8E66 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Localizable.strings; sourceTree = ""; }; - 96E0272E1E57C7E7004B8E66 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = ""; }; - 96E6145522CC135200109F14 /* MLNMapViewCompassViewTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNMapViewCompassViewTests.mm; sourceTree = ""; }; - 96E6145722CC169000109F14 /* MLNCompassButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MLNCompassButton.h; sourceTree = ""; }; - 96E6145822CC169000109F14 /* MLNCompassButton.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNCompassButton.mm; sourceTree = ""; }; - 96ED34DD22374C0900E9FCA9 /* MLNMapViewDirectionTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNMapViewDirectionTests.mm; sourceTree = ""; }; - 96F017292118FBAE00892778 /* MLNMapView_Experimental.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNMapView_Experimental.h; sourceTree = ""; }; - 96F3F73B1F5711F1003E2D2C /* MLNUserLocationHeadingIndicator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MLNUserLocationHeadingIndicator.h; sourceTree = ""; }; - 9C6E284822A984120056B7BE /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; name = Makefile; path = ../../Makefile; sourceTree = ""; }; - 9C6E285A22A9849E0056B7BE /* install-packaging-dependencies.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "install-packaging-dependencies.sh"; sourceTree = ""; }; - 9C6E285B22A9849E0056B7BE /* ios-code-coverage.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "ios-code-coverage.sh"; sourceTree = ""; }; - 9C6E285C22A9849E0056B7BE /* release-notes-github.md.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; path = "release-notes-github.md.ejs"; sourceTree = ""; }; - 9C6E285D22A9849E0056B7BE /* document.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = document.sh; sourceTree = ""; }; - 9C6E285F22A9849E0056B7BE /* deploy-packages.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "deploy-packages.sh"; sourceTree = ""; }; - 9C6E286022A9849E0056B7BE /* publish.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = publish.sh; sourceTree = ""; }; - 9C6E286122A9849E0056B7BE /* validate-framework-zip.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "validate-framework-zip.sh"; sourceTree = ""; }; - 9C6E286222A9849E0056B7BE /* metrics.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = metrics.sh; sourceTree = ""; }; - 9C6E286322A9849E0056B7BE /* package.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package.sh; sourceTree = ""; }; - 9C6E286522A9849E0056B7BE /* release-notes-jazzy.md.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; path = "release-notes-jazzy.md.ejs"; sourceTree = ""; }; - 9C6E286622A9849E0056B7BE /* deploy-snapshot.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "deploy-snapshot.sh"; sourceTree = ""; }; - 9C6E286722A9849E0056B7BE /* release-notes.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = "release-notes.js"; sourceTree = ""; }; - A4DE3DC823038A07005B3473 /* MLNMockGestureRecognizers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNMockGestureRecognizers.m; sourceTree = ""; }; - A4DE3DCA23038A7F005B3473 /* MLNMockGestureRecognizers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNMockGestureRecognizers.h; sourceTree = ""; }; - A4F3FB1C2254865900A30170 /* missing_icon.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = missing_icon.json; sourceTree = ""; }; - CA0C27912076C804001CE5B7 /* MLNShapeSourceTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MLNShapeSourceTests.m; sourceTree = ""; }; - CA0C27932076CA19001CE5B7 /* MLNMapViewIntegrationTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MLNMapViewIntegrationTest.m; sourceTree = ""; wrapsLines = 0; }; - CA0C27952076CA50001CE5B7 /* MLNMapViewIntegrationTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MLNMapViewIntegrationTest.h; sourceTree = ""; }; - CA17464D23D8A93C008B7A43 /* MLNNetworkConfigurationIntegrationTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNNetworkConfigurationIntegrationTests.mm; sourceTree = ""; }; - CA1B4A502099FB2200EDD491 /* MLNMapSnapshotterTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MLNMapSnapshotterTest.m; sourceTree = ""; }; - CA4C54FD2324948100A81659 /* MLNSourceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MLNSourceTests.swift; sourceTree = ""; }; - CA4EB8C620863487006AB465 /* MLNStyleLayerIntegrationTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MLNStyleLayerIntegrationTests.m; sourceTree = ""; }; - CA4F3BDD230F74C3008BAFEA /* MLNMapViewPendingBlockTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNMapViewPendingBlockTests.m; sourceTree = ""; }; - CA4F3BE123107793008BAFEA /* MLNCameraTransitionTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNCameraTransitionTests.mm; sourceTree = ""; }; - CA4F3BE3231077B9008BAFEA /* MLNCameraTransitionFinishTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNCameraTransitionFinishTests.mm; sourceTree = ""; }; - CA55CD3E202C16AA00CE7095 /* MLNCameraChangeReason.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNCameraChangeReason.h; sourceTree = ""; }; - CA5E5042209BDC5F001A8A81 /* MLNTestUtility.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MLNTestUtility.h; path = ../../darwin/test/MLNTestUtility.h; sourceTree = ""; }; - CA600148242BD8360041BBEC /* MLNIntegrationTestCase.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MLNIntegrationTestCase.m; sourceTree = ""; }; - CA60014A242BD8710041BBEC /* MLNIntegrationTestCase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MLNIntegrationTestCase.h; sourceTree = ""; }; - CA65C4F721E9BB080068B0D4 /* MLNCluster.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNCluster.h; sourceTree = ""; }; - CA6914B420E67F50002DB0EE /* MLNAnnotationViewIntegrationTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNAnnotationViewIntegrationTests.mm; path = "Annotation Tests/MLNAnnotationViewIntegrationTests.mm"; sourceTree = ""; }; - CA86FF0D22D8D5A0009EB14A /* MLNNetworkConfigurationTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MLNNetworkConfigurationTests.m; sourceTree = ""; }; - CA88DC2F21C85D900059ED5A /* MLNStyleURLIntegrationTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MLNStyleURLIntegrationTest.m; sourceTree = ""; }; - CA8FBC0821A47BB100D1203C /* MLNRendererConfigurationTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MLNRendererConfigurationTests.m; path = ../../darwin/test/MLNRendererConfigurationTests.m; sourceTree = ""; }; - CAAA65D72321BBA900F08A39 /* MLNTestAssertionHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MLNTestAssertionHandler.h; path = ../../darwin/test/MLNTestAssertionHandler.h; sourceTree = ""; }; - CAAA65D82321BBA900F08A39 /* MLNTestAssertionHandler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MLNTestAssertionHandler.m; path = ../../darwin/test/MLNTestAssertionHandler.m; sourceTree = ""; }; - CAD9D0A922A86D6F001B25EE /* MLNResourceTests.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNResourceTests.mm; path = ../../darwin/test/MLNResourceTests.mm; sourceTree = ""; }; - CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = ios.xcconfig; sourceTree = ""; }; - CAE7AD5320F46EF5003B6782 /* integration-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "integration-Bridging-Header.h"; sourceTree = ""; }; - CAE7AD5420F46EF5003B6782 /* MLNMapSnapshotterSwiftTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MLNMapSnapshotterSwiftTests.swift; sourceTree = ""; }; - CAFB3C13234505D500399265 /* MLNMapSnapshotter_Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MLNMapSnapshotter_Private.h; sourceTree = ""; }; - CF75A91422D85E860058A5C4 /* MLNLoggingConfiguration.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNLoggingConfiguration.mm; sourceTree = ""; }; - D42DE1E2275F7FEB00B4446E /* MLNMapProjection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MLNMapProjection.h; sourceTree = ""; }; - D42DE1E3275F7FEB00B4446E /* MLNMapProjection.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNMapProjection.mm; sourceTree = ""; }; - D4D7412D2760EEBA00102513 /* MLNMapProjectionTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = MLNMapProjectionTests.m; path = ../../darwin/test/MLNMapProjectionTests.m; sourceTree = ""; }; - D717FE7725F1955A0054E06E /* iosapp UITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "iosapp UITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - D717FE7925F1955A0054E06E /* iosapp_UITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iosapp_UITests.swift; sourceTree = ""; }; - D717FE7B25F1955A0054E06E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D717FECA25F19F520054E06E /* XCTestCase+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "XCTestCase+Extensions.swift"; sourceTree = ""; }; - D7E1154C25F4A8B50064246D /* iosapp_TestPlan.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = iosapp_TestPlan.xctestplan; sourceTree = ""; }; - D7E7CE8525F2EF6A00C175FC /* bench UITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "bench UITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - D7E7CE8725F2EF6A00C175FC /* bench_UITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = bench_UITests.swift; sourceTree = ""; }; - D7E7CE8925F2EF6A00C175FC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - DA00FC8C1D5EEB0D009AABC8 /* MLNAttributionInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNAttributionInfo.h; sourceTree = ""; }; - DA00FC8D1D5EEB0D009AABC8 /* MLNAttributionInfo.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNAttributionInfo.mm; sourceTree = ""; }; - DA0CD58F1CF56F6A00A5F5A5 /* MLNFeatureTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNFeatureTests.mm; path = ../../darwin/test/MLNFeatureTests.mm; sourceTree = ""; }; - DA0E9F3E2411AC9B007C75D4 /* MLNImageTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNImageTests.mm; path = ../../darwin/test/MLNImageTests.mm; sourceTree = ""; }; - DA17BE2F1CC4BAC300402C41 /* MLNMapView_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNMapView_Private.h; sourceTree = ""; }; - DA1AC01B1E5B8774006DF1D6 /* lt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/Localizable.strings; sourceTree = ""; }; - DA1AC0201E5B8917006DF1D6 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = uk; path = uk.lproj/Foundation.stringsdict; sourceTree = ""; }; - DA1DC94A1CB6C1C2006E619F /* MapLibre Native.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "MapLibre Native.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - DA1DC9501CB6C1C2006E619F /* MBXAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXAppDelegate.h; sourceTree = ""; }; - DA1DC9531CB6C1C2006E619F /* MBXViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXViewController.h; sourceTree = ""; }; - DA1DC95E1CB6C1C2006E619F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - DA1DC9661CB6C6B7006E619F /* MBXCustomCalloutView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXCustomCalloutView.h; sourceTree = ""; }; - DA1DC9671CB6C6B7006E619F /* MBXCustomCalloutView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXCustomCalloutView.m; sourceTree = ""; }; - DA1DC9681CB6C6B7006E619F /* MBXOfflinePacksTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBXOfflinePacksTableViewController.h; sourceTree = ""; }; - DA1DC9691CB6C6B7006E619F /* MBXOfflinePacksTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXOfflinePacksTableViewController.m; sourceTree = ""; }; - DA1DC96C1CB6C6CE006E619F /* points.geojson */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = points.geojson; sourceTree = ""; }; - DA1DC96D1CB6C6CE006E619F /* polyline.geojson */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = polyline.geojson; sourceTree = ""; }; - DA1DC96F1CB6C6CE006E619F /* threestates.geojson */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = threestates.geojson; sourceTree = ""; }; - DA1DC9961CB6E046006E619F /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - DA1DC9981CB6E054006E619F /* MBXAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXAppDelegate.m; sourceTree = ""; }; - DA1DC99A1CB6E064006E619F /* MBXViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBXViewController.m; sourceTree = ""; }; - DA1DC99E1CB6E088006E619F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - DA1F8F3C1EBD287B00367E42 /* MLNDocumentationGuideTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MLNDocumentationGuideTests.swift; path = ../../darwin/test/MLNDocumentationGuideTests.swift; sourceTree = ""; }; - DA2784FB1DF02FF4001D5B8D /* Media.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Media.xcassets; path = ../../darwin/test/Media.xcassets; sourceTree = ""; }; - DA27C24D1CBB3811000B0ECD /* GLKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GLKit.framework; path = System/Library/Frameworks/GLKit.framework; sourceTree = SDKROOT; }; - DA2DBBCC1D51E80400D38FF9 /* MLNStyleLayerTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MLNStyleLayerTests.h; path = ../../darwin/test/MLNStyleLayerTests.h; sourceTree = ""; }; - DA2DBBCD1D51E80400D38FF9 /* MLNStyleLayerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MLNStyleLayerTests.m; path = ../../darwin/test/MLNStyleLayerTests.m; sourceTree = ""; }; - DA2E88511CC036F400F24E7B /* test.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = test.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - DA2E88551CC036F400F24E7B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - DA2E885C1CC0382C00F24E7B /* MLNGeometryTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNGeometryTests.mm; path = ../../darwin/test/MLNGeometryTests.mm; sourceTree = ""; }; - DA2E885D1CC0382C00F24E7B /* MLNOfflinePackTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNOfflinePackTests.mm; path = ../../darwin/test/MLNOfflinePackTests.mm; sourceTree = ""; }; - DA2E885E1CC0382C00F24E7B /* MLNOfflineRegionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MLNOfflineRegionTests.m; path = ../../darwin/test/MLNOfflineRegionTests.m; sourceTree = ""; }; - DA2E88601CC0382C00F24E7B /* MLNStyleTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNStyleTests.mm; path = ../../darwin/test/MLNStyleTests.mm; sourceTree = ""; }; - DA33895F1FA3EAB7001EA329 /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Foundation.strings"; sourceTree = ""; }; - DA3389651FA3EE1B001EA329 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Localizable.strings; sourceTree = ""; }; - DA3389661FA3EE28001EA329 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Foundation.strings; sourceTree = ""; }; - DA3389671FA3EE2F001EA329 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = bg; path = bg.lproj/Foundation.stringsdict; sourceTree = ""; }; - DA3389681FA3EE48001EA329 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg; path = bg.lproj/Localizable.strings; sourceTree = ""; }; - DA3389691FA3EE50001EA329 /* bg */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = bg; path = bg.lproj/Localizable.stringsdict; sourceTree = ""; }; - DA33896B1FA3EF4A001EA329 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = hu; path = hu.lproj/Foundation.stringsdict; sourceTree = ""; }; - DA35A29D1CC9E94C00E826B2 /* MLNCoordinateFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNCoordinateFormatter.h; sourceTree = ""; }; - DA35A2A01CC9E95F00E826B2 /* MLNCoordinateFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNCoordinateFormatter.m; sourceTree = ""; }; - DA35A2A91CCA058D00E826B2 /* MLNCoordinateFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MLNCoordinateFormatterTests.m; path = ../../darwin/test/MLNCoordinateFormatterTests.m; sourceTree = ""; }; - DA35A2AF1CCA141D00E826B2 /* MLNCompassDirectionFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNCompassDirectionFormatter.h; sourceTree = ""; }; - DA35A2B01CCA141D00E826B2 /* MLNCompassDirectionFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNCompassDirectionFormatter.m; sourceTree = ""; }; - DA35A2B71CCA9A5D00E826B2 /* MLNClockDirectionFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNClockDirectionFormatter.m; sourceTree = ""; }; - DA35A2BA1CCA9A6900E826B2 /* MLNClockDirectionFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNClockDirectionFormatter.h; sourceTree = ""; }; - DA35A2C31CCA9F8300E826B2 /* MLNClockDirectionFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MLNClockDirectionFormatterTests.m; path = ../../darwin/test/MLNClockDirectionFormatterTests.m; sourceTree = ""; }; - DA35A2C41CCA9F8300E826B2 /* MLNCompassDirectionFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MLNCompassDirectionFormatterTests.m; path = ../../darwin/test/MLNCompassDirectionFormatterTests.m; sourceTree = ""; }; - DA35A2C71CCAAAD200E826B2 /* NSValue+MLNAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSValue+MLNAdditions.h"; sourceTree = ""; }; - DA35A2C81CCAAAD200E826B2 /* NSValue+MLNAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSValue+MLNAdditions.m"; sourceTree = ""; }; - DA35A2D11CCAB25200E826B2 /* jazzy.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = jazzy.yml; sourceTree = ""; }; - DA35D0871E1A6309007DED41 /* one-liner.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "one-liner.json"; path = "../../darwin/test/one-liner.json"; sourceTree = ""; }; - DA35D9BE240916290013ECB0 /* MLNReachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNReachability.m; sourceTree = ""; }; - DA35D9BF240916290013ECB0 /* MLNReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNReachability.h; sourceTree = ""; }; - DA35D9CC240920910013ECB0 /* libmbgl-vendor-csscolorparser.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libmbgl-vendor-csscolorparser.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - DA35D9D0240920B60013ECB0 /* libmbgl-vendor-parsedate.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libmbgl-vendor-parsedate.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - DA3C6FF21E2859E700F962BE /* test-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "test-Bridging-Header.h"; path = "../../darwin/test/test-Bridging-Header.h"; sourceTree = ""; }; - DA4A26961CB6E795000B7809 /* Mapbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Mapbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DA57D4AA1EBA8ED300793288 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = es; path = es.lproj/Localizable.stringsdict; sourceTree = ""; }; - DA57D4AB1EBA909900793288 /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = lt; path = lt.lproj/Localizable.stringsdict; sourceTree = ""; }; - DA57D4AC1EBA922A00793288 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = vi; path = vi.lproj/Localizable.stringsdict; sourceTree = ""; }; - DA5C09BA1EFC48550056B178 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Localizable.strings; sourceTree = ""; }; - DA5C09BB1EFC486C0056B178 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Localizable.strings; sourceTree = ""; }; - DA5DB1291FABF1EE001C2326 /* MLNMapAccessibilityElementTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MLNMapAccessibilityElementTests.m; sourceTree = ""; }; - DA6023F11E4CE94300DBFF23 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Foundation.strings; sourceTree = ""; }; - DA6023F21E4CE94800DBFF23 /* sv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = sv; path = sv.lproj/Foundation.stringsdict; sourceTree = ""; }; - DA618B111E68823600CB7F44 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ru; path = ru.lproj/Localizable.stringsdict; sourceTree = ""; }; - DA618B191E68883700CB7F44 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ca; path = ca.lproj/Localizable.stringsdict; sourceTree = ""; }; - DA618B1A1E68883900CB7F44 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Localizable.strings; sourceTree = ""; }; - DA618B1B1E68884E00CB7F44 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Localizable.strings; sourceTree = ""; }; - DA618B1C1E6888EC00CB7F44 /* ca */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = ca; path = ca.lproj/Foundation.strings; sourceTree = ""; }; - DA618B1D1E6888F500CB7F44 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ca; path = ca.lproj/Foundation.stringsdict; sourceTree = ""; }; - DA618B251E68920500CB7F44 /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lt; path = lt.lproj/Foundation.strings; sourceTree = ""; }; - DA618B261E68920D00CB7F44 /* lt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = lt; path = lt.lproj/Foundation.stringsdict; sourceTree = ""; }; - DA618B2B1E68932D00CB7F44 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = fi.lproj/Localizable.strings; sourceTree = ""; }; - DA6408D91DA4E7D300908C90 /* MLNVectorStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNVectorStyleLayer.h; sourceTree = ""; }; - DA6408DA1DA4E7D300908C90 /* MLNVectorStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNVectorStyleLayer.mm; sourceTree = ""; }; - DA695425215B1E75002041A4 /* MLNMapCameraTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MLNMapCameraTests.m; path = ../../darwin/test/MLNMapCameraTests.m; sourceTree = ""; }; - DA704CBB1F637311004B3F28 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Foundation.strings; sourceTree = ""; }; - DA704CBC1F637405004B3F28 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = uk; path = uk.lproj/Localizable.stringsdict; sourceTree = ""; }; - DA704CBD1F63746E004B3F28 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.stringsdict"; sourceTree = ""; }; - DA704CC01F65A475004B3F28 /* MLNMapAccessibilityElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNMapAccessibilityElement.h; sourceTree = ""; }; - DA704CC11F65A475004B3F28 /* MLNMapAccessibilityElement.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNMapAccessibilityElement.mm; sourceTree = ""; }; - DA704CC71F6663A3004B3F28 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Foundation.strings; sourceTree = ""; }; - DA7262091DEEE3480043BB89 /* MLNOpenGLStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNOpenGLStyleLayer.h; sourceTree = ""; }; - DA72620A1DEEE3480043BB89 /* MLNOpenGLStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNOpenGLStyleLayer.mm; sourceTree = ""; }; - DA737ADA1E59139D00AD2CDE /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = es; path = es.lproj/Foundation.stringsdict; sourceTree = ""; }; - DA737ADB1E5913BA00AD2CDE /* es */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; - DA737AE01E59150A00AD2CDE /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = pl; path = pl.lproj/Foundation.stringsdict; sourceTree = ""; }; - DA737AE51E5916D400AD2CDE /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ru; path = ru.lproj/Foundation.stringsdict; sourceTree = ""; }; - DA737AE71E59172C00AD2CDE /* ru */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; - DA737AE91E5917C300AD2CDE /* uk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Localizable.strings; sourceTree = ""; }; - DA737EE01D056A4E005BDA16 /* MLNMapViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNMapViewDelegate.h; sourceTree = ""; }; - DA80E9601FE84AD90065FC9B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; }; - DA80E9611FE84AEF0065FC9B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ar; path = ar.lproj/Foundation.stringsdict; sourceTree = ""; }; - DA821D041CCC6D59007508D4 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; - DA821D051CCC6D59007508D4 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; - DA8847D21CBAF91600AB86E3 /* Mapbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Mapbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DA8847D61CBAF91600AB86E3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - DA8847DF1CBAFA5100AB86E3 /* MLNSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNSettings.h; sourceTree = ""; }; - DA8847E01CBAFA5100AB86E3 /* MLNAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNAnnotation.h; sourceTree = ""; }; - DA8847E11CBAFA5100AB86E3 /* MLNGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNGeometry.h; sourceTree = ""; }; - DA8847E21CBAFA5100AB86E3 /* MLNMapCamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNMapCamera.h; sourceTree = ""; }; - DA8847E31CBAFA5100AB86E3 /* MLNMultiPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNMultiPoint.h; sourceTree = ""; }; - DA8847E41CBAFA5100AB86E3 /* MLNOfflinePack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNOfflinePack.h; sourceTree = ""; }; - DA8847E51CBAFA5100AB86E3 /* MLNOfflineRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNOfflineRegion.h; sourceTree = ""; }; - DA8847E61CBAFA5100AB86E3 /* MLNOfflineStorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNOfflineStorage.h; sourceTree = ""; }; - DA8847E71CBAFA5100AB86E3 /* MLNOverlay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNOverlay.h; sourceTree = ""; }; - DA8847E81CBAFA5100AB86E3 /* MLNPointAnnotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNPointAnnotation.h; sourceTree = ""; }; - DA8847E91CBAFA5100AB86E3 /* MLNPolygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNPolygon.h; sourceTree = ""; }; - DA8847EA1CBAFA5100AB86E3 /* MLNPolyline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNPolyline.h; sourceTree = ""; }; - DA8847EB1CBAFA5100AB86E3 /* MLNShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNShape.h; sourceTree = ""; }; - DA8847EC1CBAFA5100AB86E3 /* MLNStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNStyle.h; sourceTree = ""; }; - DA8847ED1CBAFA5100AB86E3 /* MLNTilePyramidOfflineRegion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNTilePyramidOfflineRegion.h; sourceTree = ""; }; - DA8847EE1CBAFA5100AB86E3 /* MLNTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNTypes.h; sourceTree = ""; }; - DA8847FF1CBAFA6200AB86E3 /* MLNSettings_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNSettings_Private.h; sourceTree = ""; }; - DA8848001CBAFA6200AB86E3 /* MLNSettings.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNSettings.mm; sourceTree = ""; }; - DA8848011CBAFA6200AB86E3 /* MLNGeometry_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNGeometry_Private.h; sourceTree = ""; }; - DA8848021CBAFA6200AB86E3 /* MLNGeometry.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNGeometry.mm; sourceTree = ""; }; - DA8848031CBAFA6200AB86E3 /* MLNMapCamera.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNMapCamera.mm; sourceTree = ""; }; - DA8848041CBAFA6200AB86E3 /* MLNMultiPoint_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNMultiPoint_Private.h; sourceTree = ""; }; - DA8848051CBAFA6200AB86E3 /* MLNMultiPoint.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNMultiPoint.mm; sourceTree = ""; }; - DA8848061CBAFA6200AB86E3 /* MLNOfflinePack_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNOfflinePack_Private.h; sourceTree = ""; }; - DA8848071CBAFA6200AB86E3 /* MLNOfflinePack.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNOfflinePack.mm; sourceTree = ""; }; - DA8848081CBAFA6200AB86E3 /* MLNOfflineRegion_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNOfflineRegion_Private.h; sourceTree = ""; }; - DA8848091CBAFA6200AB86E3 /* MLNOfflineStorage_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNOfflineStorage_Private.h; sourceTree = ""; }; - DA88480A1CBAFA6200AB86E3 /* MLNOfflineStorage.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNOfflineStorage.mm; sourceTree = ""; }; - DA88480B1CBAFA6200AB86E3 /* MLNPointAnnotation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNPointAnnotation.mm; sourceTree = ""; }; - DA88480C1CBAFA6200AB86E3 /* MLNPolygon.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNPolygon.mm; sourceTree = ""; }; - DA88480D1CBAFA6200AB86E3 /* MLNPolyline.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNPolyline.mm; sourceTree = ""; }; - DA88480E1CBAFA6200AB86E3 /* MLNShape.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNShape.mm; sourceTree = ""; }; - DA88480F1CBAFA6200AB86E3 /* MLNStyle.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNStyle.mm; sourceTree = ""; }; - DA8848101CBAFA6200AB86E3 /* MLNTilePyramidOfflineRegion.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNTilePyramidOfflineRegion.mm; sourceTree = ""; }; - DA8848111CBAFA6200AB86E3 /* MLNTypes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNTypes.m; sourceTree = ""; }; - DA8848121CBAFA6200AB86E3 /* NSBundle+MLNAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSBundle+MLNAdditions.h"; sourceTree = ""; }; - DA8848131CBAFA6200AB86E3 /* NSBundle+MLNAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSBundle+MLNAdditions.mm"; sourceTree = ""; }; - DA8848141CBAFA6200AB86E3 /* NSException+MLNAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSException+MLNAdditions.h"; sourceTree = ""; }; - DA8848171CBAFA6200AB86E3 /* NSString+MLNAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+MLNAdditions.h"; sourceTree = ""; }; - DA8848181CBAFA6200AB86E3 /* NSString+MLNAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+MLNAdditions.m"; sourceTree = ""; }; - DA8848341CBAFB8500AB86E3 /* MLNAnnotationImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNAnnotationImage.h; sourceTree = ""; }; - DA8848351CBAFB8500AB86E3 /* MLNCalloutView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNCalloutView.h; sourceTree = ""; }; - DA8848361CBAFB8500AB86E3 /* MLNMapView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNMapView.h; sourceTree = ""; }; - DA8848371CBAFB8500AB86E3 /* MLNMapView+IBAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MLNMapView+IBAdditions.h"; sourceTree = ""; }; - DA8848391CBAFB8500AB86E3 /* MLNUserLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNUserLocation.h; sourceTree = ""; }; - DA8848401CBAFB9800AB86E3 /* MLNAnnotationImage_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNAnnotationImage_Private.h; sourceTree = ""; }; - DA8848411CBAFB9800AB86E3 /* MLNAnnotationImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNAnnotationImage.m; sourceTree = ""; }; - DA8848441CBAFB9800AB86E3 /* MLNCompactCalloutView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNCompactCalloutView.h; sourceTree = ""; }; - DA8848451CBAFB9800AB86E3 /* MLNCompactCalloutView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNCompactCalloutView.m; sourceTree = ""; }; - DA88484A1CBAFB9800AB86E3 /* MLNMapView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNMapView.mm; sourceTree = ""; }; - DA88484B1CBAFB9800AB86E3 /* MLNUserLocation_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNUserLocation_Private.h; sourceTree = ""; }; - DA88484C1CBAFB9800AB86E3 /* MLNUserLocation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MLNUserLocation.m; sourceTree = ""; }; - DA88484D1CBAFB9800AB86E3 /* MLNFaux3DUserLocationAnnotationView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNFaux3DUserLocationAnnotationView.h; sourceTree = ""; }; - DA88485E1CBAFC2E00AB86E3 /* Mapbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Mapbox.h; path = src/Mapbox.h; sourceTree = SOURCE_ROOT; }; - DA8848891CBB037E00AB86E3 /* SMCalloutView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMCalloutView.h; sourceTree = ""; }; - DA88488A1CBB037E00AB86E3 /* SMCalloutView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SMCalloutView.m; sourceTree = ""; }; - DA8933A01CCC951200E68420 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = ""; }; - DA8933BB1CCD2CA100E68420 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Foundation.strings; sourceTree = ""; }; - DA8933BE1CCD2CAD00E68420 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Foundation.stringsdict; sourceTree = ""; }; - DA8933D51CCD306400E68420 /* Mapbox.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Mapbox.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - DA8933EF1CCD387900E68420 /* strip-frameworks.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = "strip-frameworks.sh"; path = "framework/strip-frameworks.sh"; sourceTree = SOURCE_ROOT; }; - DA8933F11CCD3FD700E68420 /* Info-static.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-static.plist"; sourceTree = ""; }; - DA8963331CC549A100684375 /* glyphs */ = {isa = PBXFileReference; lastKnownFileType = folder; path = glyphs; sourceTree = ""; }; - DA8963341CC549A100684375 /* sprites */ = {isa = PBXFileReference; lastKnownFileType = folder; path = sprites; sourceTree = ""; }; - DA8963351CC549A100684375 /* styles */ = {isa = PBXFileReference; lastKnownFileType = folder; path = styles; sourceTree = ""; }; - DA8963361CC549A100684375 /* tiles */ = {isa = PBXFileReference; lastKnownFileType = folder; path = tiles; sourceTree = ""; }; - DA8F25B91D51D2570010E6B5 /* MLNStyleLayerTests.mm.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; name = MLNStyleLayerTests.mm.ejs; path = ../test/MLNStyleLayerTests.mm.ejs; sourceTree = ""; }; - DA8F25BA1D51D2570010E6B5 /* MLNStyleLayer.h.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; path = MLNStyleLayer.h.ejs; sourceTree = ""; }; - DA8F25BB1D51D2570010E6B5 /* MLNStyleLayer.mm.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; path = MLNStyleLayer.mm.ejs; sourceTree = ""; }; - DA93409B208562EB0059919A /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/Localizable.strings"; sourceTree = ""; }; - DA93409C2085630C0059919A /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "pt-PT"; path = "pt-PT.lproj/Foundation.stringsdict"; sourceTree = ""; }; - DA93409D208563220059919A /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-PT"; path = "pt-PT.lproj/Localizable.strings"; sourceTree = ""; }; - DA93409E208563360059919A /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "pt-PT"; path = "pt-PT.lproj/Localizable.stringsdict"; sourceTree = ""; }; - DA9C012B1E4C7AD900C4742A /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "pt-BR"; path = "pt-BR.lproj/Localizable.stringsdict"; sourceTree = ""; }; - DA9C012C1E4C7ADB00C4742A /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = "pt-BR"; path = "pt-BR.lproj/Foundation.stringsdict"; sourceTree = ""; }; - DA9C012D1E4C7B1F00C4742A /* pt-BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "pt-BR"; path = "pt-BR.lproj/Localizable.strings"; sourceTree = ""; }; - DAA32CA11E4C44DB006F8D24 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = de; path = de.lproj/Foundation.stringsdict; sourceTree = ""; }; - DAA32CA21E4C44DD006F8D24 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = de; path = de.lproj/Localizable.stringsdict; sourceTree = ""; }; - DAA32CA31E4C44F1006F8D24 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Foundation.strings; sourceTree = ""; }; - DAA32CA41E4C4502006F8D24 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = ""; }; - DAA32CA91E4C4919006F8D24 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = fr; path = fr.lproj/Localizable.stringsdict; sourceTree = ""; }; - DAA32CAB1E4C491A006F8D24 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = fr; path = fr.lproj/Foundation.stringsdict; sourceTree = ""; }; - DAA32CAC1E4C4971006F8D24 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/Localizable.strings; sourceTree = ""; }; - DAA32CB51E4C4CF4006F8D24 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja; path = ja.lproj/Foundation.strings; sourceTree = ""; }; - DAA32CB71E4C4ED8006F8D24 /* sv */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/Localizable.strings; sourceTree = ""; }; - DAA32CBC1E4C4F5D006F8D24 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Localizable.strings; sourceTree = ""; }; - DAA32CBD1E4C4F62006F8D24 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Foundation.strings; sourceTree = ""; }; - DAA4227D2429771D008457DB /* MLNMapSnapshotterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MLNMapSnapshotterTests.m; path = ../../darwin/test/MLNMapSnapshotterTests.m; sourceTree = ""; }; - DAA4E4131CBB71D400178DFB /* libMapbox.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMapbox.a; sourceTree = BUILT_PRODUCTS_DIR; }; - DAAE9B1C213A636B00F7D722 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ar; path = ar.lproj/Localizable.stringsdict; sourceTree = ""; }; - DAAF72291DA903C700312FA4 /* MLNStyleValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNStyleValue.h; sourceTree = ""; }; - DAAF722A1DA903C700312FA4 /* MLNStyleValue_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNStyleValue_Private.h; sourceTree = ""; }; - DABCABA81CB80692000A7C39 /* Bench GL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Bench GL.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - DABCABAB1CB80692000A7C39 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - DABCABAD1CB80692000A7C39 /* MBXBenchAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXBenchAppDelegate.h; sourceTree = ""; }; - DABCABAE1CB80692000A7C39 /* MBXBenchAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MBXBenchAppDelegate.m; sourceTree = ""; }; - DABCABB01CB80692000A7C39 /* MBXBenchViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBXBenchViewController.h; sourceTree = ""; }; - DABCABB11CB80692000A7C39 /* MBXBenchViewController.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MBXBenchViewController.mm; sourceTree = ""; }; - DABCABB61CB80692000A7C39 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - DABCABB91CB80692000A7C39 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - DABCABBB1CB80692000A7C39 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - DABCABBF1CB80717000A7C39 /* locations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = locations.cpp; sourceTree = ""; }; - DABCABC01CB80717000A7C39 /* locations.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = locations.hpp; sourceTree = ""; }; - DAC25FCB200FD83E009BE98E /* NSExpression+MLNPrivateAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSExpression+MLNPrivateAdditions.h"; sourceTree = ""; }; - DAC49C621CD07D74009E1AA3 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Localizable.stringsdict; sourceTree = ""; }; - DAC832642404AF9000A61BF8 /* darwin.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = darwin.xcconfig; path = ../darwin/darwin.xcconfig; sourceTree = ""; }; - DAC832672404AFBB00A61BF8 /* ci.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = ci.xcconfig; path = ../darwin/ci.xcconfig; sourceTree = ""; }; - DAC8A47F24527EDB00C795BB /* glyphs.pbf */ = {isa = PBXFileReference; lastKnownFileType = file; name = glyphs.pbf; path = ../../../../../test/fixtures/resources/glyphs.pbf; sourceTree = ""; }; - DAC8A4812452971B00C795BB /* mixed.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = mixed.json; path = ../../../../../test/fixtures/local_glyphs/mixed.json; sourceTree = ""; }; - DACA86242019218500E9693A /* MLNRasterDEMSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNRasterDEMSource.h; sourceTree = ""; }; - DACA86252019218500E9693A /* MLNRasterDEMSource.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNRasterDEMSource.mm; sourceTree = ""; }; - DACBC60B20118ABE00C4D7E2 /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/Localizable.strings; sourceTree = ""; }; - DACBC60C20118AD000C4D7E2 /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/Foundation.strings; sourceTree = ""; }; - DACBC60D20118ADE00C4D7E2 /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = he.lproj/Localizable.strings; sourceTree = ""; }; - DACFE7981F66EA2100630DA8 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = vi; path = vi.lproj/Foundation.stringsdict; sourceTree = ""; }; - DAD165691CF41981001FF4B9 /* MLNFeature.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNFeature.h; sourceTree = ""; }; - DAD1656A1CF41981001FF4B9 /* MLNFeature_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNFeature_Private.h; sourceTree = ""; }; - DAD1656B1CF41981001FF4B9 /* MLNFeature.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNFeature.mm; sourceTree = ""; }; - DAD165761CF4CDFF001FF4B9 /* MLNShapeCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNShapeCollection.h; sourceTree = ""; }; - DAD165771CF4CDFF001FF4B9 /* MLNShapeCollection.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNShapeCollection.mm; sourceTree = ""; }; - DAD88E07202ACFE800AAA536 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Localizable.strings; sourceTree = ""; }; - DAD88E08202AD01300AAA536 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Foundation.strings; sourceTree = ""; }; - DAD88E09202AD01F00AAA536 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = da; path = da.lproj/Foundation.stringsdict; sourceTree = ""; }; - DAD88E0A202AD03C00AAA536 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = da.lproj/Localizable.strings; sourceTree = ""; }; - DAD88E0B202AD04D00AAA536 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = da; path = da.lproj/Localizable.stringsdict; sourceTree = ""; }; - DAE7DEC11E245455007505A6 /* MLNNSStringAdditionsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MLNNSStringAdditionsTests.m; path = ../../darwin/test/MLNNSStringAdditionsTests.m; sourceTree = ""; }; - DAE8CCAD1E6E8C70009B5CB0 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/Localizable.strings; sourceTree = ""; }; - DAE9E0F11EB7BF1B001E8E8B /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Foundation.strings; sourceTree = ""; }; - DAE9ED572238990A00C01291 /* gl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = gl; path = gl.lproj/Localizable.strings; sourceTree = ""; }; - DAE9ED582238992900C01291 /* gl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = gl; path = gl.lproj/Foundation.strings; sourceTree = ""; }; - DAE9ED592238992E00C01291 /* gl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = gl; path = gl.lproj/Foundation.stringsdict; sourceTree = ""; }; - DAE9ED5A2238993A00C01291 /* gl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = gl; path = gl.lproj/Localizable.strings; sourceTree = ""; }; - DAE9ED5B2238995A00C01291 /* gl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = gl; path = gl.lproj/Localizable.stringsdict; sourceTree = ""; }; - DAED38611D62D0FC00D7640F /* NSURL+MLNAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSURL+MLNAdditions.h"; sourceTree = ""; }; - DAED38621D62D0FC00D7640F /* NSURL+MLNAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSURL+MLNAdditions.m"; sourceTree = ""; }; - DAEDC4331D603417000224FF /* MLNAttributionInfoTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MLNAttributionInfoTests.m; path = ../../darwin/test/MLNAttributionInfoTests.m; sourceTree = ""; }; - DAF0D80F1DFE0EA000B28378 /* MLNRasterTileSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNRasterTileSource_Private.h; sourceTree = ""; }; - DAF0D8121DFE0EC500B28378 /* MLNVectorTileSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNVectorTileSource_Private.h; sourceTree = ""; }; - DAF0D8171DFE6B2800B28378 /* MLNAttributionInfo_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNAttributionInfo_Private.h; sourceTree = ""; }; - DAF25717201901E100367EF5 /* MLNHillshadeStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNHillshadeStyleLayer.mm; sourceTree = ""; }; - DAF25718201901E200367EF5 /* MLNHillshadeStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNHillshadeStyleLayer.h; sourceTree = ""; }; - DAF2571F201902BB00367EF5 /* MLNHillshadeStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNHillshadeStyleLayerTests.mm; path = ../../darwin/test/MLNHillshadeStyleLayerTests.mm; sourceTree = ""; }; - DAFBD0D21E3FA7A1000CD6BF /* zh-Hant */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Foundation.strings"; sourceTree = ""; }; - DAFBD0D31E3FA7A1000CD6BF /* zh-Hant */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = ""; }; - DAFEB3742093AE3700A86A83 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = ""; }; - DAFEB3752093AE4800A86A83 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Foundation.strings; sourceTree = ""; }; - DAFEB3762093AE6800A86A83 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ko; path = ko.lproj/Foundation.stringsdict; sourceTree = ""; }; - DAFEB3772093AE7900A86A83 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = ""; }; - DAFEB3782093AE9200A86A83 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ko; path = ko.lproj/Localizable.stringsdict; sourceTree = ""; }; - DD0902A21DB18DE700C5BDCE /* MLNNetworkConfiguration.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNNetworkConfiguration.mm; sourceTree = ""; }; - DD0902A41DB18F1B00C5BDCE /* MLNNetworkConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNNetworkConfiguration.h; sourceTree = ""; }; - DD4823721D94AE6C00EB71B7 /* fill_filter_style.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = fill_filter_style.json; sourceTree = ""; }; - DD4823731D94AE6C00EB71B7 /* line_filter_style.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = line_filter_style.json; sourceTree = ""; }; - DD4823741D94AE6C00EB71B7 /* numeric_filter_style.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = numeric_filter_style.json; sourceTree = ""; }; - DD58A4C51D822BD000E1F038 /* MLNExpressionTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNExpressionTests.mm; path = ../../darwin/test/MLNExpressionTests.mm; sourceTree = ""; }; - DD9BE4F51EB263C50079A3AF /* UIViewController+MLNAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIViewController+MLNAdditions.h"; sourceTree = ""; }; - DD9BE4F61EB263C50079A3AF /* UIViewController+MLNAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+MLNAdditions.m"; sourceTree = ""; }; - FA68F1481E9D656600F9F6C2 /* MLNFillExtrusionStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MLNFillExtrusionStyleLayer.h; sourceTree = ""; }; - FA68F1491E9D656600F9F6C2 /* MLNFillExtrusionStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MLNFillExtrusionStyleLayer.mm; sourceTree = ""; }; - FAE1CDC81E9D79C600C40B5B /* MLNFillExtrusionStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MLNFillExtrusionStyleLayerTests.mm; path = ../../darwin/test/MLNFillExtrusionStyleLayerTests.mm; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 16376B041FFD9DAF0000563E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - CA0FAA07237B3BC600C9F3C9 /* Mapbox.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 16376B2C1FFDB4B40000563E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - CA0FAA09237B3BEA00C9F3C9 /* Mapbox.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D717FE7425F1955A0054E06E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D7E7CE8225F2EF6A00C175FC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DA1DC9471CB6C1C2006E619F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - CA94E5FB237D21030037AEA0 /* Mapbox.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DA2E884E1CC036F400F24E7B /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - DA35D9D52409925E0013ECB0 /* libsqlite3.tbd in Frameworks */, - DA35D9D6240992760013ECB0 /* libz.tbd in Frameworks */, - DA35D9D4240992400013ECB0 /* libmbgl-vendor-csscolorparser.a in Frameworks */, - CA0FAA05237B3BB700C9F3C9 /* Mapbox.framework in Frameworks */, - 1F78399E235AA1E600D4D606 /* libmbgl-core.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DA8847CE1CBAF91600AB86E3 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - DA0BDD202407C12600DAA576 /* libmbgl-core.a in Frameworks */, - CAB369E5237471D600592F74 /* libz.tbd in Frameworks */, - DA35D9CE240920AB0013ECB0 /* libmbgl-vendor-csscolorparser.a in Frameworks */, - 358B3DBB2359EA0F007BEB26 /* libmbgl-vendor-icu.a in Frameworks */, - DA35D9D1240920B60013ECB0 /* libmbgl-vendor-parsedate.a in Frameworks */, - 358B3DB92359E4A0007BEB26 /* libsqlite3.tbd in Frameworks */, - DA27C24E1CBB3811000B0ECD /* GLKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DAA4E4101CBB71D400178DFB /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - DA0BDD212407C13000DAA576 /* libmbgl-core.a in Frameworks */, - DA35D9CF240920AC0013ECB0 /* libmbgl-vendor-csscolorparser.a in Frameworks */, - DA0BDD1F2407C09C00DAA576 /* libmbgl-vendor-icu.a in Frameworks */, - DA35D9D2240920BE0013ECB0 /* libmbgl-vendor-parsedate.a in Frameworks */, - 550570D22296E96E00228ECF /* GLKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DABCABA51CB80692000A7C39 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - DAA4E4081CBB6C9500178DFB /* Mapbox.framework in Frameworks */, - 3E8770612074297100B7E842 /* OpenGLES.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 16376B081FFD9DAF0000563E /* Integration Tests */ = { - isa = PBXGroup; - children = ( - CA4F3BE023107793008BAFEA /* Camera Tests */, - CA6914B320E67F07002DB0EE /* Annotations */, - CAE7AD5320F46EF5003B6782 /* integration-Bridging-Header.h */, - CA1B4A4F2099FA2800EDD491 /* Snapshotter Tests */, - 16376B091FFD9DAF0000563E /* MBGLIntegrationTests.mm */, - 16376B0B1FFD9DAF0000563E /* Info.plist */, - CA0C27912076C804001CE5B7 /* MLNShapeSourceTests.m */, - CA0C27932076CA19001CE5B7 /* MLNMapViewIntegrationTest.m */, - CA0C27952076CA50001CE5B7 /* MLNMapViewIntegrationTest.h */, - CA4EB8C620863487006AB465 /* MLNStyleLayerIntegrationTests.m */, - CA88DC2F21C85D900059ED5A /* MLNStyleURLIntegrationTest.m */, - 077061DB215DA11F000FEF62 /* MLNTestLocationManager.h */, - 077061D9215DA00E000FEF62 /* MLNTestLocationManager.m */, - CA4F3BDD230F74C3008BAFEA /* MLNMapViewPendingBlockTests.m */, - CA4C54FD2324948100A81659 /* MLNSourceTests.swift */, - CA17464D23D8A93C008B7A43 /* MLNNetworkConfigurationIntegrationTests.mm */, - CA600148242BD8360041BBEC /* MLNIntegrationTestCase.m */, - CA60014A242BD8710041BBEC /* MLNIntegrationTestCase.h */, - ); - path = "Integration Tests"; - sourceTree = ""; - }; - 16376B301FFDB4B40000563E /* Integration Test Harness */ = { - isa = PBXGroup; - children = ( - 16376B311FFDB4B40000563E /* AppDelegate.h */, - 16376B321FFDB4B40000563E /* AppDelegate.m */, - 16376B3A1FFDB4B40000563E /* Assets.xcassets */, - 16376B3C1FFDB4B40000563E /* LaunchScreen.storyboard */, - 16376B3F1FFDB4B40000563E /* Info.plist */, - 16376B401FFDB4B40000563E /* main.m */, - ); - path = "Integration Test Harness"; - sourceTree = ""; - }; - 35136D491D4277EA00C20EFD /* Sources */ = { - isa = PBXGroup; - children = ( - 0778DD401F67555F00A73B34 /* MLNComputedShapeSource.h */, - 07D9474E1F67487E00E37934 /* MLNComputedShapeSource_Private.h */, - 0778DD411F67555F00A73B34 /* MLNComputedShapeSource.mm */, - 071BBAFC1EE75CD4001FB02A /* MLNImageSource.h */, - 071BBAFD1EE75CD4001FB02A /* MLNImageSource.mm */, - 3566C76A1D4A8DFA008152BC /* MLNRasterTileSource.h */, - DAF0D80F1DFE0EA000B28378 /* MLNRasterTileSource_Private.h */, - 3566C76B1D4A8DFA008152BC /* MLNRasterTileSource.mm */, - DACA86242019218500E9693A /* MLNRasterDEMSource.h */, - DACA86252019218500E9693A /* MLNRasterDEMSource.mm */, - 3566C7641D4A77BA008152BC /* MLNShapeSource.h */, - 40F8876F1D7A1DB8008ECB67 /* MLNShapeSource_Private.h */, - 3566C7651D4A77BA008152BC /* MLNShapeSource.mm */, - 35136D4A1D4277FC00C20EFD /* MLNSource.h */, - 3566C7701D4A9198008152BC /* MLNSource_Private.h */, - 35136D4B1D4277FC00C20EFD /* MLNSource.mm */, - 404C26E01D89B877000AA13D /* MLNTileSource.h */, - 404C26E61D89C515000AA13D /* MLNTileSource_Private.h */, - 404C26E11D89B877000AA13D /* MLNTileSource.mm */, - 350098B91D480108004B2AF0 /* MLNVectorTileSource.h */, - DAF0D8121DFE0EC500B28378 /* MLNVectorTileSource_Private.h */, - 350098BA1D480108004B2AF0 /* MLNVectorTileSource.mm */, - ); - name = Sources; - sourceTree = ""; - }; - 353933F01D3FB6BA003F57D7 /* Layers */ = { - isa = PBXGroup; - children = ( - 74CB5ED0219B286400102936 /* MLNSymbolStyleLayer_Private.h */, - 74CB5EC7219B285000102936 /* MLNLineStyleLayer_Private.h */, - 74CB5EC8219B285000102936 /* MLNOpenGLStyleLayer_Private.h */, - 74CB5EC9219B285000102936 /* MLNRasterStyleLayer_Private.h */, - 74CB5EC2219B282500102936 /* MLNBackgroundStyleLayer_Private.h */, - 74CB5EC1219B282500102936 /* MLNCircleStyleLayer_Private.h */, - 74CB5EB6219B280300102936 /* MLNFillExtrusionStyleLayer_Private.h */, - 74CB5EB7219B280300102936 /* MLNFillStyleLayer_Private.h */, - 74CB5EB8219B280300102936 /* MLNHeatmapStyleLayer_Private.h */, - 74CB5EB5219B280300102936 /* MLNHillshadeStyleLayer_Private.h */, - 74CB5EAF219B252C00102936 /* MLNStyleLayerManager.h */, - 74CB5EB0219B252C00102936 /* MLNStyleLayerManager.mm */, - 353933F41D3FB785003F57D7 /* MLNBackgroundStyleLayer.h */, - 35136D381D42271A00C20EFD /* MLNBackgroundStyleLayer.mm */, - 353933F11D3FB753003F57D7 /* MLNCircleStyleLayer.h */, - 35136D3B1D42272500C20EFD /* MLNCircleStyleLayer.mm */, - FA68F1481E9D656600F9F6C2 /* MLNFillExtrusionStyleLayer.h */, - FA68F1491E9D656600F9F6C2 /* MLNFillExtrusionStyleLayer.mm */, - 35D13AC11D3D19DD00AFB4E0 /* MLNFillStyleLayer.h */, - 8989B17A201A48EA0081CF59 /* MLNHeatmapStyleLayer.h */, - 8989B17B201A48EA0081CF59 /* MLNHeatmapStyleLayer.mm */, - 35D13AC21D3D19DD00AFB4E0 /* MLNFillStyleLayer.mm */, - 3538AA1B1D542239008EC33D /* MLNForegroundStyleLayer.h */, - 3538AA1C1D542239008EC33D /* MLNForegroundStyleLayer.mm */, - DAF25718201901E200367EF5 /* MLNHillshadeStyleLayer.h */, - DAF25717201901E100367EF5 /* MLNHillshadeStyleLayer.mm */, - 353933F71D3FB79F003F57D7 /* MLNLineStyleLayer.h */, - 35136D3E1D42273000C20EFD /* MLNLineStyleLayer.mm */, - DA7262091DEEE3480043BB89 /* MLNOpenGLStyleLayer.h */, - DA72620A1DEEE3480043BB89 /* MLNOpenGLStyleLayer.mm */, - 353933FA1D3FB7C0003F57D7 /* MLNRasterStyleLayer.h */, - 35136D411D42274500C20EFD /* MLNRasterStyleLayer.mm */, - 35E79F1F1D41266300957B9E /* MLNStyleLayer_Private.h */, - 35D13AB51D3D15E300AFB4E0 /* MLNStyleLayer.h */, - 35D13AB61D3D15E300AFB4E0 /* MLNStyleLayer.mm */, - 353933FD1D3FB7DD003F57D7 /* MLNSymbolStyleLayer.h */, - 35136D441D42275100C20EFD /* MLNSymbolStyleLayer.mm */, - DA6408D91DA4E7D300908C90 /* MLNVectorStyleLayer.h */, - DA6408DA1DA4E7D300908C90 /* MLNVectorStyleLayer.mm */, - ); - name = Layers; - sourceTree = ""; - }; - 35599DA21D4682B60048254D /* Styling */ = { - isa = PBXGroup; - children = ( - 1753ED411E53CE6F00A9FD90 /* MLNConversion.h */, - 35599DB81D46AD7F0048254D /* Categories */, - 353933F01D3FB6BA003F57D7 /* Layers */, - 35136D491D4277EA00C20EFD /* Sources */, - 1F0666881EC64F8E001C16D7 /* MLNLight.h */, - 1F0666891EC64F8E001C16D7 /* MLNLight.mm */, - 1F7454941ECD450D00021D39 /* MLNLight_Private.h */, - DAAF72291DA903C700312FA4 /* MLNStyleValue.h */, - DAAF722A1DA903C700312FA4 /* MLNStyleValue_Private.h */, - 35599DEA1D46F14E0048254D /* MLNStyleValue.mm */, - ); - name = Styling; - sourceTree = ""; - }; - 35599DB81D46AD7F0048254D /* Categories */ = { - isa = PBXGroup; - children = ( - 350098DA1D484E60004B2AF0 /* NSValue+MLNStyleAttributeAdditions.h */, - 350098DB1D484E60004B2AF0 /* NSValue+MLNStyleAttributeAdditions.mm */, - ); - name = Categories; - sourceTree = ""; - }; - 355ADFF91E9281C300F3939D /* Views */ = { - isa = PBXGroup; - children = ( - 96E6145722CC169000109F14 /* MLNCompassButton.h */, - 9641771E22D546DA00332422 /* MLNCompassButton_Private.h */, - 96E6145822CC169000109F14 /* MLNCompassButton.mm */, - 355ADFFB1E9281DA00F3939D /* MLNScaleBar.h */, - 355ADFFC1E9281DA00F3939D /* MLNScaleBar.mm */, - ); - name = Views; - sourceTree = ""; - }; - 357579811D502AD4000B822E /* Styling */ = { - isa = PBXGroup; - children = ( - 3575798F1D513EF1000B822E /* Layers */, - 40CFA64E1D78754A008103BD /* Sources */, - 1F7454A61ED08AB400021D39 /* MLNLightTest.mm */, - ); - name = Styling; - sourceTree = ""; - }; - 3575798F1D513EF1000B822E /* Layers */ = { - isa = PBXGroup; - children = ( - 170C43782028D49800863DF0 /* MLNHeatmapColorTests.mm */, - 170C43792028D49800863DF0 /* MLNHeatmapStyleLayerTests.mm */, - DA2DBBCC1D51E80400D38FF9 /* MLNStyleLayerTests.h */, - DA2DBBCD1D51E80400D38FF9 /* MLNStyleLayerTests.m */, - DA3C6FF21E2859E700F962BE /* test-Bridging-Header.h */, - FAE1CDC81E9D79C600C40B5B /* MLNFillExtrusionStyleLayerTests.mm */, - 3575797F1D501E09000B822E /* MLNFillStyleLayerTests.mm */, - DAF2571F201902BB00367EF5 /* MLNHillshadeStyleLayerTests.mm */, - 357579821D502AE6000B822E /* MLNRasterStyleLayerTests.mm */, - 357579841D502AF5000B822E /* MLNSymbolStyleLayerTests.mm */, - 357579861D502AFE000B822E /* MLNLineStyleLayerTests.mm */, - 357579881D502B06000B822E /* MLNCircleStyleLayerTests.mm */, - 3575798A1D502B0C000B822E /* MLNBackgroundStyleLayerTests.mm */, - ); - name = Layers; - sourceTree = ""; - }; - 35CE617F1D4165C2004F2359 /* Categories */ = { - isa = PBXGroup; - children = ( - 357FE2DB1E02D2B20068B753 /* NSCoder+MLNAdditions.h */, - 357FE2DC1E02D2B20068B753 /* NSCoder+MLNAdditions.mm */, - 960369FF200565C700510F3D /* NSOrthography+MLNAdditions.h */, - 96036A00200565C700510F3D /* NSOrthography+MLNAdditions.m */, - 35CE61801D4165D9004F2359 /* UIColor+MLNAdditions.h */, - 35CE61811D4165D9004F2359 /* UIColor+MLNAdditions.mm */, - 967C8649210A9D3C004DF794 /* UIDevice+MLNAdditions.h */, - 967C864A210A9D3C004DF794 /* UIDevice+MLNAdditions.m */, - 30E578111DAA7D690050F07E /* UIImage+MLNAdditions.h */, - 30E578121DAA7D690050F07E /* UIImage+MLNAdditions.mm */, - DD9BE4F51EB263C50079A3AF /* UIViewController+MLNAdditions.h */, - DD9BE4F61EB263C50079A3AF /* UIViewController+MLNAdditions.m */, - 6FAFA29A220023840088709E /* UIView+MLNAdditions.h */, - 6FAFA29B220023840088709E /* UIView+MLNAdditions.m */, - ); - name = Categories; - sourceTree = ""; - }; - 402E9DE21CD3A56500FD4519 /* Playground */ = { - isa = PBXGroup; - children = ( - 402E9DE01CD2C76200FD4519 /* Mapbox.playground */, - ); - name = Playground; - sourceTree = ""; - }; - 4031ACFD1E9FD26900A3EA26 /* Test Helpers */ = { - isa = PBXGroup; - children = ( - CA5E5042209BDC5F001A8A81 /* MLNTestUtility.h */, - 4031ACFE1E9FD29F00A3EA26 /* MLNSDKTestHelpers.swift */, - A4DE3DCA23038A7F005B3473 /* MLNMockGestureRecognizers.h */, - A4DE3DC823038A07005B3473 /* MLNMockGestureRecognizers.m */, - CAAA65D72321BBA900F08A39 /* MLNTestAssertionHandler.h */, - CAAA65D82321BBA900F08A39 /* MLNTestAssertionHandler.m */, - ); - name = "Test Helpers"; - sourceTree = ""; - }; - 409F43FB1E9E77D10048729D /* Swift Integration */ = { - isa = PBXGroup; - children = ( - 7914ABB428A5B92F007D986B /* CI-Expressions.xctestplan */, - 7914ABB328A5B799007D986B /* CI.xctestplan */, - 409F43FC1E9E781C0048729D /* MLNMapViewDelegateIntegrationTests.swift */, - 409D0A0C1ED614CE00C95D0C /* MLNAnnotationViewIntegrationTests.swift */, - ); - name = "Swift Integration"; - sourceTree = ""; - }; - 40CFA64E1D78754A008103BD /* Sources */ = { - isa = PBXGroup; - children = ( - 07D8C6FD1F67562800381808 /* MLNComputedShapeSourceTests.m */, - 071BBB051EE7761A001FB02A /* MLNImageSourceTests.m */, - 40CFA6501D787579008103BD /* MLNShapeSourceTests.mm */, - 920A3E5C1E6F995200C16EFC /* MLNSourceQueryTests.m */, - 4085AF081D933DEA00F11B22 /* MLNTileSetTests.mm */, - ); - name = Sources; - sourceTree = ""; - }; - 4BAB4DBC264E6DE600F015C1 /* Configuration */ = { - isa = PBXGroup; - children = ( - 4BAB4DB0264E6DE200F015C1 /* MLNDefaultStyle.h */, - 4BAB4DAF264E6DE200F015C1 /* MLNDefaultStyle.mm */, - 4BAB4DA3264E6DCA00F015C1 /* MLNTileServerOptions.h */, - 4BAB4DA2264E6DCA00F015C1 /* MLNTileServerOptions.mm */, - ); - name = Configuration; - sourceTree = ""; - }; - 9604FC341F313A5E003EEA02 /* Fixtures */ = { - isa = PBXGroup; - children = ( - 353BAEF51D646370009A8DA9 /* amsterdam.geojson */, - DA1DC96C1CB6C6CE006E619F /* points.geojson */, - A4F3FB1C2254865900A30170 /* missing_icon.json */, - DA1DC96D1CB6C6CE006E619F /* polyline.geojson */, - 1F26B6C220E1A351007BCC21 /* simple_route.json */, - DA1DC96F1CB6C6CE006E619F /* threestates.geojson */, - DD4823721D94AE6C00EB71B7 /* fill_filter_style.json */, - DD4823731D94AE6C00EB71B7 /* line_filter_style.json */, - DD4823741D94AE6C00EB71B7 /* numeric_filter_style.json */, - ); - name = Fixtures; - sourceTree = ""; - }; - 9C6E285922A9849E0056B7BE /* Scripts */ = { - isa = PBXGroup; - children = ( - 9C6E285A22A9849E0056B7BE /* install-packaging-dependencies.sh */, - 9C6E285B22A9849E0056B7BE /* ios-code-coverage.sh */, - 9C6E285C22A9849E0056B7BE /* release-notes-github.md.ejs */, - 9C6E285D22A9849E0056B7BE /* document.sh */, - 9C6E285F22A9849E0056B7BE /* deploy-packages.sh */, - 9C6E286022A9849E0056B7BE /* publish.sh */, - 9C6E286122A9849E0056B7BE /* validate-framework-zip.sh */, - 9C6E286222A9849E0056B7BE /* metrics.sh */, - 9C6E286322A9849E0056B7BE /* package.sh */, - 9C6E286522A9849E0056B7BE /* release-notes-jazzy.md.ejs */, - 9C6E286622A9849E0056B7BE /* deploy-snapshot.sh */, - 9C6E286722A9849E0056B7BE /* release-notes.js */, - ); - name = Scripts; - path = scripts; - sourceTree = ""; - }; - CA1B4A4F2099FA2800EDD491 /* Snapshotter Tests */ = { - isa = PBXGroup; - children = ( - CA1B4A502099FB2200EDD491 /* MLNMapSnapshotterTest.m */, - CAE7AD5420F46EF5003B6782 /* MLNMapSnapshotterSwiftTests.swift */, - ); - path = "Snapshotter Tests"; - sourceTree = ""; - }; - CA4F3BE023107793008BAFEA /* Camera Tests */ = { - isa = PBXGroup; - children = ( - CA4F3BE123107793008BAFEA /* MLNCameraTransitionTests.mm */, - CA4F3BE3231077B9008BAFEA /* MLNCameraTransitionFinishTests.mm */, - ); - path = "Camera Tests"; - sourceTree = ""; - }; - CA6914B320E67F07002DB0EE /* Annotations */ = { - isa = PBXGroup; - children = ( - CA6914B420E67F50002DB0EE /* MLNAnnotationViewIntegrationTests.mm */, - ); - name = Annotations; - sourceTree = ""; - }; - D717FE7825F1955A0054E06E /* iosapp UITests */ = { - isa = PBXGroup; - children = ( - D7E1154C25F4A8B50064246D /* iosapp_TestPlan.xctestplan */, - D717FE7925F1955A0054E06E /* iosapp_UITests.swift */, - D717FE7B25F1955A0054E06E /* Info.plist */, - D717FECA25F19F520054E06E /* XCTestCase+Extensions.swift */, - ); - path = "iosapp UITests"; - sourceTree = ""; - }; - D7E7CE8625F2EF6A00C175FC /* bench UITests */ = { - isa = PBXGroup; - children = ( - D7E7CE8725F2EF6A00C175FC /* bench_UITests.swift */, - D7E7CE8925F2EF6A00C175FC /* Info.plist */, - ); - path = "bench UITests"; - sourceTree = ""; - }; - DA1DC9411CB6C1C2006E619F = { - isa = PBXGroup; - children = ( - 1F7839A5235E137000D4D606 /* sideload_sat.db */, - 402E9DE21CD3A56500FD4519 /* Playground */, - DA1DC94C1CB6C1C2006E619F /* Demo App */, - DABCABA91CB80692000A7C39 /* Benchmarking App */, - DA8847D31CBAF91600AB86E3 /* SDK */, - DA2E88521CC036F400F24E7B /* SDK Tests */, - 16376B301FFDB4B40000563E /* Integration Test Harness */, - 16376B081FFD9DAF0000563E /* Integration Tests */, - D717FE7825F1955A0054E06E /* iosapp UITests */, - D7E7CE8625F2EF6A00C175FC /* bench UITests */, - DA1DC9921CB6DF24006E619F /* Frameworks */, - DAC07C951CBB2CAD000CB309 /* Configuration */, - DA1DC94B1CB6C1C2006E619F /* Products */, - 9C6E285922A9849E0056B7BE /* Scripts */, - ); - sourceTree = ""; - }; - DA1DC94B1CB6C1C2006E619F /* Products */ = { - isa = PBXGroup; - children = ( - DA1DC94A1CB6C1C2006E619F /* MapLibre Native.app */, - DABCABA81CB80692000A7C39 /* Bench GL.app */, - DA8847D21CBAF91600AB86E3 /* Mapbox.framework */, - DAA4E4131CBB71D400178DFB /* libMapbox.a */, - DA2E88511CC036F400F24E7B /* test.xctest */, - DA8933D51CCD306400E68420 /* Mapbox.bundle */, - 16376B071FFD9DAF0000563E /* integration.xctest */, - 16376B2F1FFDB4B40000563E /* Integration Test Harness.app */, - D717FE7725F1955A0054E06E /* iosapp UITests.xctest */, - D7E7CE8525F2EF6A00C175FC /* bench UITests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - DA1DC94C1CB6C1C2006E619F /* Demo App */ = { - isa = PBXGroup; - children = ( - 3E6465D52065767A00685536 /* LimeGreenStyleLayer.h */, - 3E6465D42065767A00685536 /* LimeGreenStyleLayer.m */, - DA1DC9501CB6C1C2006E619F /* MBXAppDelegate.h */, - DA1DC9981CB6E054006E619F /* MBXAppDelegate.m */, - 40FDA7691CCAAA6800442548 /* MBXAnnotationView.h */, - 40FDA76A1CCAAA6800442548 /* MBXAnnotationView.m */, - DA1DC9661CB6C6B7006E619F /* MBXCustomCalloutView.h */, - DA1DC9671CB6C6B7006E619F /* MBXCustomCalloutView.m */, - 354B839A1D2E9B48005D9406 /* MBXUserLocationAnnotationView.h */, - 354B839B1D2E9B48005D9406 /* MBXUserLocationAnnotationView.m */, - DA1DC9681CB6C6B7006E619F /* MBXOfflinePacksTableViewController.h */, - DA1DC9691CB6C6B7006E619F /* MBXOfflinePacksTableViewController.m */, - 927FBCFA1F4DAA8300F8BF1F /* MBXSnapshotsViewController.h */, - 927FBCFB1F4DAA8300F8BF1F /* MBXSnapshotsViewController.m */, - 1F26B6BF20E189C9007BCC21 /* MBXCustomLocationViewController.h */, - 1F26B6C020E189C9007BCC21 /* MBXCustomLocationViewController.m */, - DA1DC9531CB6C1C2006E619F /* MBXViewController.h */, - DA1DC99A1CB6E064006E619F /* MBXViewController.m */, - 5DCC598628888C0B008803DA /* MLNMapView_Experimental.h */, - 965DF50F20F9430500438AAC /* MBXFrameTimeGraphView.h */, - 965DF51020F9430500438AAC /* MBXFrameTimeGraphView.m */, - 632281DD1E6F855900D75A5D /* MBXEmbeddedMapViewController.h */, - 632281DE1E6F855900D75A5D /* MBXEmbeddedMapViewController.m */, - 6FA9341621EF372100AA9CA8 /* MBXOrnamentsViewController.h */, - 6FA9341521EF372100AA9CA8 /* MBXOrnamentsViewController.m */, - DA821D051CCC6D59007508D4 /* Main.storyboard */, - DA821D041CCC6D59007508D4 /* LaunchScreen.storyboard */, - DA1DC99E1CB6E088006E619F /* Assets.xcassets */, - DA1DC95E1CB6C1C2006E619F /* Info.plist */, - 074A7F0C2277C093001A62D1 /* insert_access_token.sh */, - 96E027251E57C76E004B8E66 /* Localizable.strings */, - 076171C62141A91700668A35 /* Settings.bundle */, - 9604FC341F313A5E003EEA02 /* Fixtures */, - DA1DC94D1CB6C1C2006E619F /* Supporting Files */, - 075AF840227B6762008D7A4C /* MBXState.h */, - 075AF841227B6762008D7A4C /* MBXState.m */, - 075AF843227B67C5008D7A4C /* MBXStateManager.h */, - 075AF844227B67C6008D7A4C /* MBXStateManager.m */, - ); - name = "Demo App"; - path = app; - sourceTree = ""; - }; - DA1DC94D1CB6C1C2006E619F /* Supporting Files */ = { - isa = PBXGroup; - children = ( - DA1DC9961CB6E046006E619F /* main.m */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - DA1DC9921CB6DF24006E619F /* Frameworks */ = { - isa = PBXGroup; - children = ( - DA27C24D1CBB3811000B0ECD /* GLKit.framework */, - DA4A26961CB6E795000B7809 /* Mapbox.framework */, - 554180411D2E97DE00012372 /* OpenGLES.framework */, - 1F78399D235AA1E600D4D606 /* libmbgl-core.a */, - DA35D9CC240920910013ECB0 /* libmbgl-vendor-csscolorparser.a */, - 358B3DBA2359EA0F007BEB26 /* libmbgl-vendor-icu.a */, - DA35D9D0240920B60013ECB0 /* libmbgl-vendor-parsedate.a */, - 9680274122653C3E006BA4A1 /* libmbxaccounts.a */, - 358B3DB82359E491007BEB26 /* libsqlite3.tbd */, - 1F7839A3235E11FC00D4D606 /* libz.tbd */, - ); - name = Frameworks; - sourceTree = ""; - }; - DA2E88521CC036F400F24E7B /* SDK Tests */ = { - isa = PBXGroup; - children = ( - DA2E88551CC036F400F24E7B /* Info.plist */, - DA2784FB1DF02FF4001D5B8D /* Media.xcassets */, - 353D23951D0B0DFE002BE09D /* MLNAnnotationViewTests.m */, - DAEDC4331D603417000224FF /* MLNAttributionInfoTests.m */, - DA35A2C31CCA9F8300E826B2 /* MLNClockDirectionFormatterTests.m */, - 35D9DDE11DA25EEC00DAAD69 /* MLNCodingTests.mm */, - DA35A2C41CCA9F8300E826B2 /* MLNCompassDirectionFormatterTests.m */, - DA35A2A91CCA058D00E826B2 /* MLNCoordinateFormatterTests.m */, - 3598544C1E1D38AA00B29F84 /* MLNDistanceFormatterTests.m */, - 6407D66F1E0085FD00F6A9C3 /* MLNDocumentationExampleTests.swift */, - DA1F8F3C1EBD287B00367E42 /* MLNDocumentationGuideTests.swift */, - DD58A4C51D822BD000E1F038 /* MLNExpressionTests.mm */, - DA0CD58F1CF56F6A00A5F5A5 /* MLNFeatureTests.mm */, - DA2E885C1CC0382C00F24E7B /* MLNGeometryTests.mm */, - DA0E9F3E2411AC9B007C75D4 /* MLNImageTests.mm */, - DA5DB1291FABF1EE001C2326 /* MLNMapAccessibilityElementTests.m */, - DA695425215B1E75002041A4 /* MLNMapCameraTests.m */, - DAA4227D2429771D008457DB /* MLNMapSnapshotterTests.m */, - 96E6145522CC135200109F14 /* MLNMapViewCompassViewTests.mm */, - 1F0196A923174B0700F5C819 /* MLNMapViewContentInsetTests.m */, - 96ED34DD22374C0900E9FCA9 /* MLNMapViewDirectionTests.mm */, - 1F8E8A80233A9FD9009B51ED /* MLNMapViewGestureRecognizerTests.mm */, - 16376B481FFEED010000563E /* MLNMapViewLayoutTests.m */, - 96381C0122C6F3950053497D /* MLNMapViewPitchTests.m */, - 9658C154204761FC00D8A674 /* MLNMapViewScaleBarTests.m */, - 076171C22139C70900668A35 /* MLNMapViewTests.m */, - D4D7412D2760EEBA00102513 /* MLNMapProjectionTests.m */, - 9686D1BC22D9357700194EA0 /* MLNMapViewZoomTests.mm */, - 1F95931C1E6DE2E900D5B294 /* MLNNSDateAdditionsTests.mm */, - 96036A0520059BBA00510F3D /* MLNNSOrthographyAdditionsTests.m */, - DAE7DEC11E245455007505A6 /* MLNNSStringAdditionsTests.m */, - DA2E885D1CC0382C00F24E7B /* MLNOfflinePackTests.mm */, - DA2E885E1CC0382C00F24E7B /* MLNOfflineRegionTests.m */, - 55E2AD121E5B125400E8C587 /* MLNOfflineStorageTests.mm */, - 35B8E08B1D6C8B5100E768D2 /* MLNPredicateTests.mm */, - CA8FBC0821A47BB100D1203C /* MLNRendererConfigurationTests.m */, - CAD9D0A922A86D6F001B25EE /* MLNResourceTests.mm */, - DA2E88601CC0382C00F24E7B /* MLNStyleTests.mm */, - 556660D71E1D085500E2C41B /* MLNVersionNumber.m */, - DA35D0871E1A6309007DED41 /* one-liner.json */, - DAC8A4812452971B00C795BB /* mixed.json */, - DAC8A47F24527EDB00C795BB /* glyphs.pbf */, - 357579811D502AD4000B822E /* Styling */, - 409F43FB1E9E77D10048729D /* Swift Integration */, - 4031ACFD1E9FD26900A3EA26 /* Test Helpers */, - CA86FF0D22D8D5A0009EB14A /* MLNNetworkConfigurationTests.m */, - ); - name = "SDK Tests"; - path = test; - sourceTree = ""; - }; - DA8847D31CBAF91600AB86E3 /* SDK */ = { - isa = PBXGroup; - children = ( - DA88485E1CBAFC2E00AB86E3 /* Mapbox.h */, - 40834AEF1FDF4F0100C1BD0D /* Mapbox-Prefix.pch */, - DA8847DE1CBAFA3E00AB86E3 /* Foundation */, - DA8F25BC1D51D2570010E6B5 /* Foundation Templates */, - DA8933B91CCD2C6700E68420 /* Foundation Resources */, - DA8848331CBAFB2A00AB86E3 /* Kit */, - DA8848621CBAFCC100AB86E3 /* Kit Resources */, - DA8847D61CBAF91600AB86E3 /* Info.plist */, - DA8933F11CCD3FD700E68420 /* Info-static.plist */, - ); - name = SDK; - path = framework; - sourceTree = ""; - }; - DA8847DE1CBAFA3E00AB86E3 /* Foundation */ = { - isa = PBXGroup; - children = ( - 4BAB4DBC264E6DE600F015C1 /* Configuration */, - 35599DA21D4682B60048254D /* Styling */, - DAD165831CF4CFED001FF4B9 /* Categories */, - DAD165801CF4CF9A001FF4B9 /* Formatters */, - DAD165811CF4CFC4001FF4B9 /* Geometry */, - DAD165821CF4CFE3001FF4B9 /* Offline Maps */, - DA8847DF1CBAFA5100AB86E3 /* MLNSettings.h */, - DA8847FF1CBAFA6200AB86E3 /* MLNSettings_Private.h */, - DA8848001CBAFA6200AB86E3 /* MLNSettings.mm */, - DA00FC8C1D5EEB0D009AABC8 /* MLNAttributionInfo.h */, - DAF0D8171DFE6B2800B28378 /* MLNAttributionInfo_Private.h */, - DA00FC8D1D5EEB0D009AABC8 /* MLNAttributionInfo.mm */, - 1FF48585223710BE00F19727 /* MLNAttributedExpression.h */, - 1FF48586223710BE00F19727 /* MLNAttributedExpression.m */, - 556660C91E1BF3A900E2C41B /* MLNFoundation.h */, - 558DE79E1E5615E400C7916D /* MLNFoundation_Private.h */, - 558DE79F1E5615E400C7916D /* MLNFoundation.mm */, - DA8847E21CBAFA5100AB86E3 /* MLNMapCamera.h */, - DA8848031CBAFA6200AB86E3 /* MLNMapCamera.mm */, - 927FBCFD1F4DB05500F8BF1F /* MLNMapSnapshotter.h */, - CAFB3C13234505D500399265 /* MLNMapSnapshotter_Private.h */, - 927FBCFE1F4DB05500F8BF1F /* MLNMapSnapshotter.mm */, - DD0902A41DB18F1B00C5BDCE /* MLNNetworkConfiguration.h */, - 1F2B94BF221636D800210640 /* MLNNetworkConfiguration_Private.h */, - DD0902A21DB18DE700C5BDCE /* MLNNetworkConfiguration.mm */, - DA35D9BF240916290013ECB0 /* MLNReachability.h */, - DA35D9BE240916290013ECB0 /* MLNReachability.m */, - 3EA9337830C7738BF7F5493C /* MLNRendererConfiguration.h */, - 3EA931BC4F087E166D538F21 /* MLNRendererConfiguration.m */, - 92F2C3EC1F0E3C3A00268EC0 /* MLNRendererFrontend.h */, - DA8847EC1CBAFA5100AB86E3 /* MLNStyle.h */, - 35E0CFE51D3E501500188327 /* MLNStyle_Private.h */, - DA88480F1CBAFA6200AB86E3 /* MLNStyle.mm */, - DA8847EE1CBAFA5100AB86E3 /* MLNTypes.h */, - DA8848111CBAFA6200AB86E3 /* MLNTypes.m */, - 35E1A4D71D74336F007AA97F /* MLNValueEvaluator.h */, - 1FCAE2A020B872A400C577DD /* MLNLocationManager.h */, - 1FCAE2A620B88B3800C577DD /* MLNLocationManager_Private.h */, - 1FCAE2A120B872A400C577DD /* MLNLocationManager.m */, - 1F6A82A021360F9C00BA5B41 /* MLNLoggingConfiguration.h */, - CF75A91422D85E860058A5C4 /* MLNLoggingConfiguration.mm */, - 1F6A82A62138871900BA5B41 /* MLNLoggingConfiguration_Private.h */, - ); - name = Foundation; - path = ../darwin/src; - sourceTree = SOURCE_ROOT; - }; - DA8848331CBAFB2A00AB86E3 /* Kit */ = { - isa = PBXGroup; - children = ( - DAD165841CF4D06B001FF4B9 /* Annotations */, - 35CE617F1D4165C2004F2359 /* Categories */, - DA8848881CBB036000AB86E3 /* SMCalloutView */, - 355ADFF91E9281C300F3939D /* Views */, - CA55CD3E202C16AA00CE7095 /* MLNCameraChangeReason.h */, - DA704CC01F65A475004B3F28 /* MLNMapAccessibilityElement.h */, - DA704CC11F65A475004B3F28 /* MLNMapAccessibilityElement.mm */, - 96F017292118FBAE00892778 /* MLNMapView_Experimental.h */, - DA17BE2F1CC4BAC300402C41 /* MLNMapView_Private.h */, - DA8848361CBAFB8500AB86E3 /* MLNMapView.h */, - DA88484A1CBAFB9800AB86E3 /* MLNMapView.mm */, - 550570C522958FB400228ECF /* MLNMapView+Impl.h */, - 550570C422958FB300228ECF /* MLNMapView+Impl.mm */, - 5580B459229570A00091291B /* MLNMapView+OpenGL.h */, - 5580B45A229570A10091291B /* MLNMapView+OpenGL.mm */, - DA8848371CBAFB8500AB86E3 /* MLNMapView+IBAdditions.h */, - DA737EE01D056A4E005BDA16 /* MLNMapViewDelegate.h */, - 4BC5769125E3D3D6006E06EB /* MLNUserLocationAnnotationViewStyle.h */, - 4BC5769225E3D3D6006E06EB /* MLNUserLocationAnnotationViewStyle.m */, - D42DE1E2275F7FEB00B4446E /* MLNMapProjection.h */, - D42DE1E3275F7FEB00B4446E /* MLNMapProjection.mm */, - ); - name = Kit; - path = src; - sourceTree = SOURCE_ROOT; - }; - DA8848621CBAFCC100AB86E3 /* Kit Resources */ = { - isa = PBXGroup; - children = ( - 960D0C351ECF5AAF008E151F /* Images.xcassets */, - DA89339F1CCC951200E68420 /* Localizable.strings */, - DAC49C5F1CD02BC9009E1AA3 /* Localizable.stringsdict */, - DA8933EF1CCD387900E68420 /* strip-frameworks.sh */, - ); - name = "Kit Resources"; - path = resources; - sourceTree = SOURCE_ROOT; - }; - DA8848881CBB036000AB86E3 /* SMCalloutView */ = { - isa = PBXGroup; - children = ( - DA8848891CBB037E00AB86E3 /* SMCalloutView.h */, - DA88488A1CBB037E00AB86E3 /* SMCalloutView.m */, - ); - name = SMCalloutView; - path = ../vendor/SMCalloutView; - sourceTree = ""; - }; - DA8933B91CCD2C6700E68420 /* Foundation Resources */ = { - isa = PBXGroup; - children = ( - DA8933BA1CCD2CA100E68420 /* Foundation.strings */, - DA8933BD1CCD2CAD00E68420 /* Foundation.stringsdict */, - ); - name = "Foundation Resources"; - path = ../../darwin/resources; - sourceTree = ""; - }; - DA8963321CC5498400684375 /* Fixtures */ = { - isa = PBXGroup; - children = ( - DA8963331CC549A100684375 /* glyphs */, - DA8963341CC549A100684375 /* sprites */, - DA8963351CC549A100684375 /* styles */, - DA8963361CC549A100684375 /* tiles */, - ); - name = Fixtures; - path = assets; - sourceTree = ""; - }; - DA8F25BC1D51D2570010E6B5 /* Foundation Templates */ = { - isa = PBXGroup; - children = ( - DA8F25BA1D51D2570010E6B5 /* MLNStyleLayer.h.ejs */, - DA8F25BB1D51D2570010E6B5 /* MLNStyleLayer.mm.ejs */, - DA8F25B91D51D2570010E6B5 /* MLNStyleLayerTests.mm.ejs */, - ); - name = "Foundation Templates"; - path = ../../darwin/src; - sourceTree = ""; - }; - DABCABA91CB80692000A7C39 /* Benchmarking App */ = { - isa = PBXGroup; - children = ( - 4B8A425A2656ED62008E725A /* insert_access_token.sh */, - DABCABAD1CB80692000A7C39 /* MBXBenchAppDelegate.h */, - DABCABAE1CB80692000A7C39 /* MBXBenchAppDelegate.m */, - DABCABB01CB80692000A7C39 /* MBXBenchViewController.h */, - DABCABB11CB80692000A7C39 /* MBXBenchViewController.mm */, - DABCABBF1CB80717000A7C39 /* locations.cpp */, - DABCABC01CB80717000A7C39 /* locations.hpp */, - DABCABB61CB80692000A7C39 /* Assets.xcassets */, - DA8963321CC5498400684375 /* Fixtures */, - DABCABB81CB80692000A7C39 /* LaunchScreen.storyboard */, - DABCABBB1CB80692000A7C39 /* Info.plist */, - DABCABAA1CB80692000A7C39 /* Supporting Files */, - ); - name = "Benchmarking App"; - path = benchmark; - sourceTree = ""; - }; - DABCABAA1CB80692000A7C39 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - DABCABAB1CB80692000A7C39 /* main.m */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - DAC07C951CBB2CAD000CB309 /* Configuration */ = { - isa = PBXGroup; - children = ( - 9C6E284822A984120056B7BE /* Makefile */, - DAC832672404AFBB00A61BF8 /* ci.xcconfig */, - DAC832642404AF9000A61BF8 /* darwin.xcconfig */, - CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */, - DA35A2D11CCAB25200E826B2 /* jazzy.yml */, - ); - name = Configuration; - sourceTree = ""; - }; - DAD165801CF4CF9A001FF4B9 /* Formatters */ = { - isa = PBXGroup; - children = ( - DA35A2BA1CCA9A6900E826B2 /* MLNClockDirectionFormatter.h */, - DA35A2B71CCA9A5D00E826B2 /* MLNClockDirectionFormatter.m */, - DA35A2AF1CCA141D00E826B2 /* MLNCompassDirectionFormatter.h */, - DA35A2B01CCA141D00E826B2 /* MLNCompassDirectionFormatter.m */, - DA35A29D1CC9E94C00E826B2 /* MLNCoordinateFormatter.h */, - DA35A2A01CC9E95F00E826B2 /* MLNCoordinateFormatter.m */, - 3557F7AE1E1D27D300CCA5E6 /* MLNDistanceFormatter.h */, - 3557F7AF1E1D27D300CCA5E6 /* MLNDistanceFormatter.m */, - ); - name = Formatters; - sourceTree = ""; - }; - DAD165811CF4CFC4001FF4B9 /* Geometry */ = { - isa = PBXGroup; - children = ( - CA65C4F721E9BB080068B0D4 /* MLNCluster.h */, - DA8847E01CBAFA5100AB86E3 /* MLNAnnotation.h */, - DAD1656A1CF41981001FF4B9 /* MLNFeature_Private.h */, - DAD165691CF41981001FF4B9 /* MLNFeature.h */, - DAD1656B1CF41981001FF4B9 /* MLNFeature.mm */, - DA8848011CBAFA6200AB86E3 /* MLNGeometry_Private.h */, - DA8847E11CBAFA5100AB86E3 /* MLNGeometry.h */, - DA8848021CBAFA6200AB86E3 /* MLNGeometry.mm */, - DA8848041CBAFA6200AB86E3 /* MLNMultiPoint_Private.h */, - DA8847E31CBAFA5100AB86E3 /* MLNMultiPoint.h */, - DA8848051CBAFA6200AB86E3 /* MLNMultiPoint.mm */, - DA8847E71CBAFA5100AB86E3 /* MLNOverlay.h */, - DA8847E81CBAFA5100AB86E3 /* MLNPointAnnotation.h */, - DA88480B1CBAFA6200AB86E3 /* MLNPointAnnotation.mm */, - 4049C2AB1DB6E05500B3F799 /* MLNPointCollection_Private.h */, - 4049C29B1DB6CD6C00B3F799 /* MLNPointCollection.h */, - 4049C29C1DB6CD6C00B3F799 /* MLNPointCollection.mm */, - 9654C1271FFC1CC000DB6A19 /* MLNPolygon_Private.h */, - DA8847E91CBAFA5100AB86E3 /* MLNPolygon.h */, - DA88480C1CBAFA6200AB86E3 /* MLNPolygon.mm */, - 9654C1251FFC1AB900DB6A19 /* MLNPolyline_Private.h */, - DA8847EA1CBAFA5100AB86E3 /* MLNPolyline.h */, - DA88480D1CBAFA6200AB86E3 /* MLNPolyline.mm */, - 40CF6DBA1DAC3C1800A4D18B /* MLNShape_Private.h */, - DA8847EB1CBAFA5100AB86E3 /* MLNShape.h */, - DA88480E1CBAFA6200AB86E3 /* MLNShape.mm */, - DAD165761CF4CDFF001FF4B9 /* MLNShapeCollection.h */, - DAD165771CF4CDFF001FF4B9 /* MLNShapeCollection.mm */, - ); - name = Geometry; - sourceTree = ""; - }; - DAD165821CF4CFE3001FF4B9 /* Offline Maps */ = { - isa = PBXGroup; - children = ( - DA8847E41CBAFA5100AB86E3 /* MLNOfflinePack.h */, - DA8848061CBAFA6200AB86E3 /* MLNOfflinePack_Private.h */, - DA8848071CBAFA6200AB86E3 /* MLNOfflinePack.mm */, - DA8847E51CBAFA5100AB86E3 /* MLNOfflineRegion.h */, - DA8848081CBAFA6200AB86E3 /* MLNOfflineRegion_Private.h */, - DA8847E61CBAFA5100AB86E3 /* MLNOfflineStorage.h */, - DA8848091CBAFA6200AB86E3 /* MLNOfflineStorage_Private.h */, - DA88480A1CBAFA6200AB86E3 /* MLNOfflineStorage.mm */, - 92FC0AE8207CEE16007B6B54 /* MLNShapeOfflineRegion_Private.h */, - 92FC0AE7207CEE16007B6B54 /* MLNShapeOfflineRegion.h */, - 92FC0AE9207CEE16007B6B54 /* MLNShapeOfflineRegion.mm */, - DA8847ED1CBAFA5100AB86E3 /* MLNTilePyramidOfflineRegion.h */, - 9221BAAC2069843A0054BDF4 /* MLNTilePyramidOfflineRegion_Private.h */, - DA8848101CBAFA6200AB86E3 /* MLNTilePyramidOfflineRegion.mm */, - ); - name = "Offline Maps"; - sourceTree = ""; - }; - DAD165831CF4CFED001FF4B9 /* Categories */ = { - isa = PBXGroup; - children = ( - 400532FF1DB0862B0069F638 /* NSArray+MLNAdditions.h */, - 400533001DB0862B0069F638 /* NSArray+MLNAdditions.mm */, - DA8848121CBAFA6200AB86E3 /* NSBundle+MLNAdditions.h */, - DA8848131CBAFA6200AB86E3 /* NSBundle+MLNAdditions.mm */, - 3510FFE81D6D9C7A00F413B2 /* NSComparisonPredicate+MLNAdditions.h */, - 3510FFE91D6D9C7A00F413B2 /* NSComparisonPredicate+MLNAdditions.mm */, - 3510FFF71D6DCC4700F413B2 /* NSCompoundPredicate+MLNAdditions.h */, - 3510FFF81D6DCC4700F413B2 /* NSCompoundPredicate+MLNAdditions.mm */, - 353AFA121D65AB17005A69F4 /* NSDate+MLNAdditions.h */, - 353AFA131D65AB17005A69F4 /* NSDate+MLNAdditions.mm */, - 408AA8551DAEDA0800022900 /* NSDictionary+MLNAdditions.h */, - 408AA8561DAEDA0800022900 /* NSDictionary+MLNAdditions.mm */, - DA8848141CBAFA6200AB86E3 /* NSException+MLNAdditions.h */, - 3510FFEE1D6D9D8C00F413B2 /* NSExpression+MLNAdditions.h */, - DAC25FCB200FD83E009BE98E /* NSExpression+MLNPrivateAdditions.h */, - 3510FFEF1D6D9D8C00F413B2 /* NSExpression+MLNAdditions.mm */, - 35B82BF61D6C5F8400B1B721 /* NSPredicate+MLNAdditions.h */, - 35B82BF71D6C5F8400B1B721 /* NSPredicate+MLNAdditions.mm */, - 1FC4817B2098CBC0000D09B4 /* NSPredicate+MLNPrivateAdditions.h */, - DA8848171CBAFA6200AB86E3 /* NSString+MLNAdditions.h */, - DA8848181CBAFA6200AB86E3 /* NSString+MLNAdditions.m */, - DAED38611D62D0FC00D7640F /* NSURL+MLNAdditions.h */, - DAED38621D62D0FC00D7640F /* NSURL+MLNAdditions.m */, - DA35A2C71CCAAAD200E826B2 /* NSValue+MLNAdditions.h */, - DA35A2C81CCAAAD200E826B2 /* NSValue+MLNAdditions.m */, - ); - name = Categories; - sourceTree = ""; - }; - DAD165841CF4D06B001FF4B9 /* Annotations */ = { - isa = PBXGroup; - children = ( - 4BC576C825E443CE006E06EB /* MLNFaux3DUserLocationAnnotationView.mm */, - 404326881D5B9B1A007111BD /* MLNAnnotationContainerView_Private.h */, - 40EDA1BD1CFE0D4A00D9EA68 /* MLNAnnotationContainerView.h */, - 40EDA1BE1CFE0D4A00D9EA68 /* MLNAnnotationContainerView.m */, - DA8848401CBAFB9800AB86E3 /* MLNAnnotationImage_Private.h */, - DA8848341CBAFB8500AB86E3 /* MLNAnnotationImage.h */, - DA8848411CBAFB9800AB86E3 /* MLNAnnotationImage.m */, - 4018B1C31CDC277F00F666AF /* MLNAnnotationView_Private.h */, - 4018B1C51CDC277F00F666AF /* MLNAnnotationView.h */, - 4018B1C41CDC277F00F666AF /* MLNAnnotationView.mm */, - DA8848351CBAFB8500AB86E3 /* MLNCalloutView.h */, - DA8848441CBAFB9800AB86E3 /* MLNCompactCalloutView.h */, - DA8848451CBAFB9800AB86E3 /* MLNCompactCalloutView.m */, - DA88484D1CBAFB9800AB86E3 /* MLNFaux3DUserLocationAnnotationView.h */, - DA88484B1CBAFB9800AB86E3 /* MLNUserLocation_Private.h */, - DA8848391CBAFB8500AB86E3 /* MLNUserLocation.h */, - DA88484C1CBAFB9800AB86E3 /* MLNUserLocation.m */, - 359F57451D2FDBD5005217F1 /* MLNUserLocationAnnotationView_Private.h */, - 354B83941D2E873E005D9406 /* MLNUserLocationAnnotationView.h */, - 354B83951D2E873E005D9406 /* MLNUserLocationAnnotationView.m */, - 966FCF501F3C321000F2B6DE /* MLNUserLocationHeadingArrowLayer.h */, - 966FCF511F3C321000F2B6DE /* MLNUserLocationHeadingArrowLayer.m */, - 966FCF4A1F3A5C9200F2B6DE /* MLNUserLocationHeadingBeamLayer.h */, - 966FCF4B1F3A5C9200F2B6DE /* MLNUserLocationHeadingBeamLayer.m */, - 96F3F73B1F5711F1003E2D2C /* MLNUserLocationHeadingIndicator.h */, - ); - name = Annotations; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - DA8847CF1CBAF91600AB86E3 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 4BAB4DB3264E6DE200F015C1 /* MLNDefaultStyle.h in Headers */, - 4BAB4DA6264E6DCA00F015C1 /* MLNTileServerOptions.h in Headers */, - 4BC5769325E3D3D6006E06EB /* MLNUserLocationAnnotationViewStyle.h in Headers */, - 556660DB1E1D8E8D00E2C41B /* MLNFoundation.h in Headers */, - 92FC0AEA207CEE16007B6B54 /* MLNShapeOfflineRegion.h in Headers */, - 35D13AC31D3D19DD00AFB4E0 /* MLNFillStyleLayer.h in Headers */, - DA88483A1CBAFB8500AB86E3 /* MLNAnnotationImage.h in Headers */, - 74CB5EBD219B280400102936 /* MLNFillStyleLayer_Private.h in Headers */, - DAF2571B201901E200367EF5 /* MLNHillshadeStyleLayer.h in Headers */, - CA65C4F821E9BB080068B0D4 /* MLNCluster.h in Headers */, - DA35A2BB1CCA9A6900E826B2 /* MLNClockDirectionFormatter.h in Headers */, - 353933FE1D3FB7DD003F57D7 /* MLNSymbolStyleLayer.h in Headers */, - DA8848201CBAFA6200AB86E3 /* MLNOfflinePack_Private.h in Headers */, - 9641771F22D546DA00332422 /* MLNCompassButton_Private.h in Headers */, - DA00FC8E1D5EEB0D009AABC8 /* MLNAttributionInfo.h in Headers */, - DA8847FA1CBAFA5100AB86E3 /* MLNPolyline.h in Headers */, - 3566C7711D4A9198008152BC /* MLNSource_Private.h in Headers */, - 4018B1C91CDC288A00F666AF /* MLNAnnotationView_Private.h in Headers */, - 35E1A4D81D74336F007AA97F /* MLNValueEvaluator.h in Headers */, - DA88482C1CBAFA6200AB86E3 /* NSBundle+MLNAdditions.h in Headers */, - 74CB5EC5219B282500102936 /* MLNBackgroundStyleLayer_Private.h in Headers */, - 74CB5EB9219B280400102936 /* MLNHillshadeStyleLayer_Private.h in Headers */, - 357FE2DD1E02D2B20068B753 /* NSCoder+MLNAdditions.h in Headers */, - 35D13AB71D3D15E300AFB4E0 /* MLNStyleLayer.h in Headers */, - 07D947531F67488E00E37934 /* MLNComputedShapeSource_Private.h in Headers */, - 9654C1261FFC1AB900DB6A19 /* MLNPolyline_Private.h in Headers */, - 40F887701D7A1E58008ECB67 /* MLNShapeSource_Private.h in Headers */, - 350098DC1D484E60004B2AF0 /* NSValue+MLNStyleAttributeAdditions.h in Headers */, - 74CB5ECA219B285000102936 /* MLNLineStyleLayer_Private.h in Headers */, - 74CB5ECE219B285000102936 /* MLNRasterStyleLayer_Private.h in Headers */, - DA8848231CBAFA6200AB86E3 /* MLNOfflineStorage_Private.h in Headers */, - 404326891D5B9B27007111BD /* MLNAnnotationContainerView_Private.h in Headers */, - CA55CD41202C16AA00CE7095 /* MLNCameraChangeReason.h in Headers */, - DA88483B1CBAFB8500AB86E3 /* MLNCalloutView.h in Headers */, - 35E0CFE61D3E501500188327 /* MLNStyle_Private.h in Headers */, - 3510FFF01D6D9D8C00F413B2 /* NSExpression+MLNAdditions.h in Headers */, - 74CB5EBF219B280400102936 /* MLNHeatmapStyleLayer_Private.h in Headers */, - 1FC4817D2098CBC0000D09B4 /* NSPredicate+MLNPrivateAdditions.h in Headers */, - 1F2B94C0221636D900210640 /* MLNNetworkConfiguration_Private.h in Headers */, - 353AFA141D65AB17005A69F4 /* NSDate+MLNAdditions.h in Headers */, - DA8848531CBAFB9800AB86E3 /* MLNCompactCalloutView.h in Headers */, - 74CB5EB1219B252C00102936 /* MLNStyleLayerManager.h in Headers */, - DA8847FB1CBAFA5100AB86E3 /* MLNShape.h in Headers */, - 353933F51D3FB785003F57D7 /* MLNBackgroundStyleLayer.h in Headers */, - DA88485A1CBAFB9800AB86E3 /* MLNUserLocation_Private.h in Headers */, - 966FCF531F3C322400F2B6DE /* MLNUserLocationHeadingArrowLayer.h in Headers */, - DA27C24F1CBB4C11000B0ECD /* MLNSettings_Private.h in Headers */, - DA8847FC1CBAFA5100AB86E3 /* MLNStyle.h in Headers */, - DD9BE4F71EB263C50079A3AF /* UIViewController+MLNAdditions.h in Headers */, - DAF0D8131DFE0EC500B28378 /* MLNVectorTileSource_Private.h in Headers */, - 354B83961D2E873E005D9406 /* MLNUserLocationAnnotationView.h in Headers */, - 74CB5EC3219B282500102936 /* MLNCircleStyleLayer_Private.h in Headers */, - DA8847F01CBAFA5100AB86E3 /* MLNAnnotation.h in Headers */, - 400533011DB0862B0069F638 /* NSArray+MLNAdditions.h in Headers */, - 96E6145922CC169000109F14 /* MLNCompassButton.h in Headers */, - 1F06668A1EC64F8E001C16D7 /* MLNLight.h in Headers */, - 4049C29D1DB6CD6C00B3F799 /* MLNPointCollection.h in Headers */, - 40CF6DBB1DAC3C6600A4D18B /* MLNShape_Private.h in Headers */, - 4018B1CA1CDC288E00F666AF /* MLNAnnotationView.h in Headers */, - 9654C1291FFC1CCD00DB6A19 /* MLNPolygon_Private.h in Headers */, - 35E79F201D41266300957B9E /* MLNStyleLayer_Private.h in Headers */, - FA68F14A1E9D656600F9F6C2 /* MLNFillExtrusionStyleLayer.h in Headers */, - 353933FB1D3FB7C0003F57D7 /* MLNRasterStyleLayer.h in Headers */, - DA35D9C2240916290013ECB0 /* MLNReachability.h in Headers */, - 6F018BB0220031BF003E7269 /* UIView+MLNAdditions.h in Headers */, - 1FCAE2A820B88B3800C577DD /* MLNLocationManager_Private.h in Headers */, - 5580B45B229570A10091291B /* MLNMapView+OpenGL.h in Headers */, - DA8847EF1CBAFA5100AB86E3 /* MLNSettings.h in Headers */, - DA35A2C91CCAAAD200E826B2 /* NSValue+MLNAdditions.h in Headers */, - 1F6A82A82138871900BA5B41 /* MLNLoggingConfiguration_Private.h in Headers */, - 3510FFEA1D6D9C7A00F413B2 /* NSComparisonPredicate+MLNAdditions.h in Headers */, - DA6408DB1DA4E7D300908C90 /* MLNVectorStyleLayer.h in Headers */, - DA704CC21F65A475004B3F28 /* MLNMapAccessibilityElement.h in Headers */, - DD0902AB1DB192A800C5BDCE /* MLNNetworkConfiguration.h in Headers */, - 35D3A1E61E9BE7EB002B38EE /* MLNScaleBar.h in Headers */, - 0778DD431F67556700A73B34 /* MLNComputedShapeSource.h in Headers */, - 1F6A82A221360F9D00BA5B41 /* MLNLoggingConfiguration.h in Headers */, - DA8848311CBAFA6200AB86E3 /* NSString+MLNAdditions.h in Headers */, - 967C864B210A9D3C004DF794 /* UIDevice+MLNAdditions.h in Headers */, - CAFB3C14234505D500399265 /* MLNMapSnapshotter_Private.h in Headers */, - 1FCAE2A220B872A400C577DD /* MLNLocationManager.h in Headers */, - DACA86262019218600E9693A /* MLNRasterDEMSource.h in Headers */, - 353933F81D3FB79F003F57D7 /* MLNLineStyleLayer.h in Headers */, - 92F2C3ED1F0E3C3A00268EC0 /* MLNRendererFrontend.h in Headers */, - DAAF722D1DA903C700312FA4 /* MLNStyleValue_Private.h in Headers */, - 071BBB031EE76146001FB02A /* MLNImageSource.h in Headers */, - 74CB5EBB219B280400102936 /* MLNFillExtrusionStyleLayer_Private.h in Headers */, - DA8847F41CBAFA5100AB86E3 /* MLNOfflinePack.h in Headers */, - DA88482E1CBAFA6200AB86E3 /* NSException+MLNAdditions.h in Headers */, - 74CB5ED1219B286400102936 /* MLNSymbolStyleLayer_Private.h in Headers */, - 9221BAAD2069843A0054BDF4 /* MLNTilePyramidOfflineRegion_Private.h in Headers */, - 96F3F73C1F57124B003E2D2C /* MLNUserLocationHeadingIndicator.h in Headers */, - 408AA8571DAEDA1700022900 /* NSDictionary+MLNAdditions.h in Headers */, - DA88483F1CBAFB8500AB86E3 /* MLNUserLocation.h in Headers */, - 558DE7A01E5615E400C7916D /* MLNFoundation_Private.h in Headers */, - 966FCF4C1F3A5C9200F2B6DE /* MLNUserLocationHeadingBeamLayer.h in Headers */, - DA88483D1CBAFB8500AB86E3 /* MLNMapView+IBAdditions.h in Headers */, - DA17BE301CC4BAC300402C41 /* MLNMapView_Private.h in Headers */, - DAD165781CF4CDFF001FF4B9 /* MLNShapeCollection.h in Headers */, - DAED38631D62D0FC00D7640F /* NSURL+MLNAdditions.h in Headers */, - D42DE1E4275F7FEB00B4446E /* MLNMapProjection.h in Headers */, - DA88481E1CBAFA6200AB86E3 /* MLNMultiPoint_Private.h in Headers */, - 3566C7661D4A77BA008152BC /* MLNShapeSource.h in Headers */, - 35CE61821D4165D9004F2359 /* UIColor+MLNAdditions.h in Headers */, - 35B82BF81D6C5F8400B1B721 /* NSPredicate+MLNAdditions.h in Headers */, - 927FBCFF1F4DB05500F8BF1F /* MLNMapSnapshotter.h in Headers */, - DA35A29E1CC9E94C00E826B2 /* MLNCoordinateFormatter.h in Headers */, - DAF0D8181DFE6B2800B28378 /* MLNAttributionInfo_Private.h in Headers */, - DAAF722B1DA903C700312FA4 /* MLNStyleValue.h in Headers */, - DA8847F71CBAFA5100AB86E3 /* MLNOverlay.h in Headers */, - DA35A2B11CCA141D00E826B2 /* MLNCompassDirectionFormatter.h in Headers */, - DA88488B1CBB037E00AB86E3 /* SMCalloutView.h in Headers */, - DA8847FE1CBAFA5100AB86E3 /* MLNTypes.h in Headers */, - DA8847F11CBAFA5100AB86E3 /* MLNGeometry.h in Headers */, - DA8848221CBAFA6200AB86E3 /* MLNOfflineRegion_Private.h in Headers */, - 35136D4C1D4277FC00C20EFD /* MLNSource.h in Headers */, - 3566C76C1D4A8DFA008152BC /* MLNRasterTileSource.h in Headers */, - DA8847F91CBAFA5100AB86E3 /* MLNPolygon.h in Headers */, - 4049C2AC1DB6E05500B3F799 /* MLNPointCollection_Private.h in Headers */, - DA8847F81CBAFA5100AB86E3 /* MLNPointAnnotation.h in Headers */, - 8989B17C201A48EB0081CF59 /* MLNHeatmapStyleLayer.h in Headers */, - 353933F21D3FB753003F57D7 /* MLNCircleStyleLayer.h in Headers */, - DA8847F31CBAFA5100AB86E3 /* MLNMultiPoint.h in Headers */, - 30E578171DAA85520050F07E /* UIImage+MLNAdditions.h in Headers */, - 96036A01200565C700510F3D /* NSOrthography+MLNAdditions.h in Headers */, - 1F7454961ECD450D00021D39 /* MLNLight_Private.h in Headers */, - 1FF48587223710BE00F19727 /* MLNAttributedExpression.h in Headers */, - DAD1656C1CF41981001FF4B9 /* MLNFeature.h in Headers */, - 40EDA1C01CFE0E0200D9EA68 /* MLNAnnotationContainerView.h in Headers */, - DA88484F1CBAFB9800AB86E3 /* MLNAnnotationImage_Private.h in Headers */, - 1753ED421E53CE6F00A9FD90 /* MLNConversion.h in Headers */, - DA8847F21CBAFA5100AB86E3 /* MLNMapCamera.h in Headers */, - 3538AA1D1D542239008EC33D /* MLNForegroundStyleLayer.h in Headers */, - DA8847F51CBAFA5100AB86E3 /* MLNOfflineRegion.h in Headers */, - DA737EE11D056A4E005BDA16 /* MLNMapViewDelegate.h in Headers */, - 92FC0AEC207CEE16007B6B54 /* MLNShapeOfflineRegion_Private.h in Headers */, - DA88481B1CBAFA6200AB86E3 /* MLNGeometry_Private.h in Headers */, - 3510FFF91D6DCC4700F413B2 /* NSCompoundPredicate+MLNAdditions.h in Headers */, - 3557F7B01E1D27D300CCA5E6 /* MLNDistanceFormatter.h in Headers */, - DAC25FCC200FD83F009BE98E /* NSExpression+MLNPrivateAdditions.h in Headers */, - 74CB5ECC219B285000102936 /* MLNOpenGLStyleLayer_Private.h in Headers */, - DA72620B1DEEE3480043BB89 /* MLNOpenGLStyleLayer.h in Headers */, - 404C26E71D89C55D000AA13D /* MLNTileSource_Private.h in Headers */, - DA88485C1CBAFB9800AB86E3 /* MLNFaux3DUserLocationAnnotationView.h in Headers */, - 359F57461D2FDDA6005217F1 /* MLNUserLocationAnnotationView_Private.h in Headers */, - 404C26E21D89B877000AA13D /* MLNTileSource.h in Headers */, - DA8847FD1CBAFA5100AB86E3 /* MLNTilePyramidOfflineRegion.h in Headers */, - DA8848601CBAFC2E00AB86E3 /* Mapbox.h in Headers */, - DAF0D8101DFE0EA000B28378 /* MLNRasterTileSource_Private.h in Headers */, - 350098BB1D480108004B2AF0 /* MLNVectorTileSource.h in Headers */, - DA8847F61CBAFA5100AB86E3 /* MLNOfflineStorage.h in Headers */, - DAD1656E1CF41981001FF4B9 /* MLNFeature_Private.h in Headers */, - DA88483C1CBAFB8500AB86E3 /* MLNMapView.h in Headers */, - 3EA9363147E77DD29FA06063 /* MLNRendererConfiguration.h in Headers */, - 550570C822958FB400228ECF /* MLNMapView+Impl.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DABFB85C1CBE99DE00D62B32 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 4BAB4DB4264E6DE200F015C1 /* MLNDefaultStyle.h in Headers */, - 556660CA1E1BF3A900E2C41B /* MLNFoundation.h in Headers */, - 4BAB4DA7264E6DCA00F015C1 /* MLNTileServerOptions.h in Headers */, - 96E516ED200058A200A02306 /* MLNComputedShapeSource.h in Headers */, - 35B82BF91D6C5F8400B1B721 /* NSPredicate+MLNAdditions.h in Headers */, - 92FC0AEB207CEE16007B6B54 /* MLNShapeOfflineRegion.h in Headers */, - DA35A2CA1CCAAAD200E826B2 /* NSValue+MLNAdditions.h in Headers */, - 350098BC1D480108004B2AF0 /* MLNVectorTileSource.h in Headers */, - FA68F14B1E9D656600F9F6C2 /* MLNFillExtrusionStyleLayer.h in Headers */, - 96E516DE200054F700A02306 /* MLNGeometry_Private.h in Headers */, - 353933FC1D3FB7C0003F57D7 /* MLNRasterStyleLayer.h in Headers */, - 3566C76D1D4A8DFA008152BC /* MLNRasterTileSource.h in Headers */, - 9641772022D546DA00332422 /* MLNCompassButton_Private.h in Headers */, - DAED38641D62D0FC00D7640F /* NSURL+MLNAdditions.h in Headers */, - DABFB85E1CBE99E500D62B32 /* MLNAnnotation.h in Headers */, - DABFB8641CBE99E500D62B32 /* MLNOfflineStorage.h in Headers */, - 96E516E32000552A00A02306 /* MLNSettings_Private.h in Headers */, - 96E5170420005A6B00A02306 /* SMCalloutView.h in Headers */, - 96036A02200565C700510F3D /* NSOrthography+MLNAdditions.h in Headers */, - DAD165791CF4CDFF001FF4B9 /* MLNShapeCollection.h in Headers */, - 4049C29E1DB6CD6C00B3F799 /* MLNPointCollection.h in Headers */, - 3566C7671D4A77BA008152BC /* MLNShapeSource.h in Headers */, - DA35A29F1CC9E94C00E826B2 /* MLNCoordinateFormatter.h in Headers */, - 967C864C210A9D3C004DF794 /* UIDevice+MLNAdditions.h in Headers */, - 404C26E31D89B877000AA13D /* MLNTileSource.h in Headers */, - 96E516F6200059EC00A02306 /* MLNRendererFrontend.h in Headers */, - 071BBB041EE76147001FB02A /* MLNImageSource.h in Headers */, - 74CB5EC0219B280400102936 /* MLNHeatmapStyleLayer_Private.h in Headers */, - 74CB5ECB219B285000102936 /* MLNLineStyleLayer_Private.h in Headers */, - CA65C4F921E9BB080068B0D4 /* MLNCluster.h in Headers */, - DABFB8611CBE99E500D62B32 /* MLNMultiPoint.h in Headers */, - 74CB5ECD219B285000102936 /* MLNOpenGLStyleLayer_Private.h in Headers */, - 74CB5ECF219B285000102936 /* MLNRasterStyleLayer_Private.h in Headers */, - 35D3A1E71E9BE7EC002B38EE /* MLNScaleBar.h in Headers */, - 96E516EF2000594F00A02306 /* NSArray+MLNAdditions.h in Headers */, - 96E516F12000596800A02306 /* NSString+MLNAdditions.h in Headers */, - 35E0CFE71D3E501500188327 /* MLNStyle_Private.h in Headers */, - CA55CD42202C16AA00CE7095 /* MLNCameraChangeReason.h in Headers */, - DABFB86D1CBE9A0F00D62B32 /* MLNAnnotationImage.h in Headers */, - DABFB8721CBE9A0F00D62B32 /* MLNUserLocation.h in Headers */, - 92FC0AED207CEE16007B6B54 /* MLNShapeOfflineRegion_Private.h in Headers */, - 927FBD001F4DB05500F8BF1F /* MLNMapSnapshotter.h in Headers */, - 3566C7721D4A9198008152BC /* MLNSource_Private.h in Headers */, - 353933FF1D3FB7DD003F57D7 /* MLNSymbolStyleLayer.h in Headers */, - DAAF722E1DA903C700312FA4 /* MLNStyleValue_Private.h in Headers */, - 1F6A82A92138871900BA5B41 /* MLNLoggingConfiguration_Private.h in Headers */, - DABFB8661CBE99E500D62B32 /* MLNPointAnnotation.h in Headers */, - 96E6145A22CC169000109F14 /* MLNCompassButton.h in Headers */, - 96E516E42000560B00A02306 /* MLNComputedShapeSource_Private.h in Headers */, - 96E516E92000560B00A02306 /* MLNAnnotationImage_Private.h in Headers */, - 96E516E52000560B00A02306 /* MLNOfflinePack_Private.h in Headers */, - DD9BE4F91EB263D20079A3AF /* UIViewController+MLNAdditions.h in Headers */, - DAF2571C201901E200367EF5 /* MLNHillshadeStyleLayer.h in Headers */, - 74CB5EC4219B282500102936 /* MLNCircleStyleLayer_Private.h in Headers */, - DABFB8621CBE99E500D62B32 /* MLNOfflinePack.h in Headers */, - 96E516FA20005A3D00A02306 /* MLNUserLocationHeadingArrowLayer.h in Headers */, - 96E516E62000560B00A02306 /* MLNOfflineRegion_Private.h in Headers */, - DAD1656D1CF41981001FF4B9 /* MLNFeature.h in Headers */, - 550570C922958FB400228ECF /* MLNMapView+Impl.h in Headers */, - 5580B45C229570A10091291B /* MLNMapView+OpenGL.h in Headers */, - 96E516E72000560B00A02306 /* MLNOfflineStorage_Private.h in Headers */, - DA35D9C3240916290013ECB0 /* MLNReachability.h in Headers */, - DA17BE311CC4BDAA00402C41 /* MLNMapView_Private.h in Headers */, - DABFB86C1CBE99E500D62B32 /* MLNTypes.h in Headers */, - 96E516F720005A2700A02306 /* MLNAnnotationContainerView.h in Headers */, - DABFB8691CBE99E500D62B32 /* MLNShape.h in Headers */, - 3510FFEB1D6D9C7A00F413B2 /* NSComparisonPredicate+MLNAdditions.h in Headers */, - 35E1A4D91D74336F007AA97F /* MLNValueEvaluator.h in Headers */, - DABFB8701CBE9A0F00D62B32 /* MLNMapView+IBAdditions.h in Headers */, - CAFB3C15234505D500399265 /* MLNMapSnapshotter_Private.h in Headers */, - 6F018BAF220031BF003E7269 /* UIView+MLNAdditions.h in Headers */, - 96E516EA2000560B00A02306 /* MLNAnnotationView_Private.h in Headers */, - 96E516FB20005A4000A02306 /* MLNUserLocationHeadingBeamLayer.h in Headers */, - 96E516DC2000547000A02306 /* MLNPolyline_Private.h in Headers */, - 353AFA151D65AB17005A69F4 /* NSDate+MLNAdditions.h in Headers */, - 3510FFFA1D6DCC4700F413B2 /* NSCompoundPredicate+MLNAdditions.h in Headers */, - 1FF48588223710BE00F19727 /* MLNAttributedExpression.h in Headers */, - DA72620C1DEEE3480043BB89 /* MLNOpenGLStyleLayer.h in Headers */, - 1F2B94C1221636D900210640 /* MLNNetworkConfiguration_Private.h in Headers */, - 35CE61831D4165D9004F2359 /* UIColor+MLNAdditions.h in Headers */, - 96E516F32000597100A02306 /* NSDictionary+MLNAdditions.h in Headers */, - 4BC5769425E3D3D6006E06EB /* MLNUserLocationAnnotationViewStyle.h in Headers */, - 1FCAE2A920B88B3800C577DD /* MLNLocationManager_Private.h in Headers */, - 96E516F02000595800A02306 /* NSBundle+MLNAdditions.h in Headers */, - 96E516F920005A3500A02306 /* MLNFaux3DUserLocationAnnotationView.h in Headers */, - 96E516F22000596D00A02306 /* NSException+MLNAdditions.h in Headers */, - 96E516EC2000560B00A02306 /* MLNUserLocationAnnotationView_Private.h in Headers */, - 1FC4817F2098CD80000D09B4 /* NSPredicate+MLNPrivateAdditions.h in Headers */, - DABFB8671CBE99E500D62B32 /* MLNPolygon.h in Headers */, - 404C26E81D89C55D000AA13D /* MLNTileSource_Private.h in Headers */, - 74CB5EBC219B280400102936 /* MLNFillExtrusionStyleLayer_Private.h in Headers */, - 1F7454931ECBB43F00021D39 /* MLNLight.h in Headers */, - DAAF722C1DA903C700312FA4 /* MLNStyleValue.h in Headers */, - DABFB8651CBE99E500D62B32 /* MLNOverlay.h in Headers */, - 35E79F211D41266300957B9E /* MLNStyleLayer_Private.h in Headers */, - 350098DD1D484E60004B2AF0 /* NSValue+MLNStyleAttributeAdditions.h in Headers */, - 74CB5EBE219B280400102936 /* MLNFillStyleLayer_Private.h in Headers */, - DABFB8681CBE99E500D62B32 /* MLNPolyline.h in Headers */, - 96E516DF200054FB00A02306 /* MLNShape_Private.h in Headers */, - DABFB86F1CBE9A0F00D62B32 /* MLNMapView.h in Headers */, - D42DE1E5275F7FEB00B4446E /* MLNMapProjection.h in Headers */, - DA6408DC1DA4E7D300908C90 /* MLNVectorStyleLayer.h in Headers */, - 353933F31D3FB753003F57D7 /* MLNCircleStyleLayer.h in Headers */, - 558DE7A11E5615E400C7916D /* MLNFoundation_Private.h in Headers */, - 96E516F820005A3000A02306 /* MLNCompactCalloutView.h in Headers */, - 96E516E22000551900A02306 /* MLNPointCollection_Private.h in Headers */, - 3538AA1E1D542239008EC33D /* MLNForegroundStyleLayer.h in Headers */, - 30E578181DAA85520050F07E /* UIImage+MLNAdditions.h in Headers */, - DA704CC31F65A475004B3F28 /* MLNMapAccessibilityElement.h in Headers */, - 40F887711D7A1E59008ECB67 /* MLNShapeSource_Private.h in Headers */, - DABFB8631CBE99E500D62B32 /* MLNOfflineRegion.h in Headers */, - DA35A2B21CCA141D00E826B2 /* MLNCompassDirectionFormatter.h in Headers */, - DAF0D8141DFE0EC500B28378 /* MLNVectorTileSource_Private.h in Headers */, - 8989B17D201A48EB0081CF59 /* MLNHeatmapStyleLayer.h in Headers */, - 74CB5EC6219B282500102936 /* MLNBackgroundStyleLayer_Private.h in Headers */, - DABFB8731CBE9A9900D62B32 /* Mapbox.h in Headers */, - 74CB5EBA219B280400102936 /* MLNHillshadeStyleLayer_Private.h in Headers */, - 357FE2DE1E02D2B20068B753 /* NSCoder+MLNAdditions.h in Headers */, - 1753ED431E53CE6F00A9FD90 /* MLNConversion.h in Headers */, - DAC25FCD200FD83F009BE98E /* NSExpression+MLNPrivateAdditions.h in Headers */, - 74CB5ED2219B286400102936 /* MLNSymbolStyleLayer_Private.h in Headers */, - 354B83971D2E873E005D9406 /* MLNUserLocationAnnotationView.h in Headers */, - DAF0D8111DFE0EA000B28378 /* MLNRasterTileSource_Private.h in Headers */, - 1F6A82A321360F9D00BA5B41 /* MLNLoggingConfiguration.h in Headers */, - DABFB86B1CBE99E500D62B32 /* MLNTilePyramidOfflineRegion.h in Headers */, - 968F36B51E4D128D003A5522 /* MLNDistanceFormatter.h in Headers */, - 4018B1CB1CDC288E00F666AF /* MLNAnnotationView.h in Headers */, - DABFB85F1CBE99E500D62B32 /* MLNGeometry.h in Headers */, - 1FCAE2A320B872A400C577DD /* MLNLocationManager.h in Headers */, - 96E516E02000550C00A02306 /* MLNFeature_Private.h in Headers */, - 353933F61D3FB785003F57D7 /* MLNBackgroundStyleLayer.h in Headers */, - DABFB85D1CBE99E500D62B32 /* MLNSettings.h in Headers */, - 74CB5EB2219B252C00102936 /* MLNStyleLayerManager.h in Headers */, - 9221BAB020699F8A0054BDF4 /* MLNTilePyramidOfflineRegion_Private.h in Headers */, - 96E516F5200059B100A02306 /* MLNNetworkConfiguration.h in Headers */, - 96E516DD200054F200A02306 /* MLNPolygon_Private.h in Headers */, - 353933F91D3FB79F003F57D7 /* MLNLineStyleLayer.h in Headers */, - 96E516EB2000560B00A02306 /* MLNUserLocation_Private.h in Headers */, - 35D13AB81D3D15E300AFB4E0 /* MLNStyleLayer.h in Headers */, - 35136D4D1D4277FC00C20EFD /* MLNSource.h in Headers */, - DA35A2BC1CCA9A6900E826B2 /* MLNClockDirectionFormatter.h in Headers */, - 96E516E82000560B00A02306 /* MLNAnnotationContainerView_Private.h in Headers */, - 35D13AC41D3D19DD00AFB4E0 /* MLNFillStyleLayer.h in Headers */, - DABFB86E1CBE9A0F00D62B32 /* MLNCalloutView.h in Headers */, - 96E516FC20005A4400A02306 /* MLNUserLocationHeadingIndicator.h in Headers */, - 1F7454971ECD450D00021D39 /* MLNLight_Private.h in Headers */, - DABFB8601CBE99E500D62B32 /* MLNMapCamera.h in Headers */, - DA737EE21D056A4E005BDA16 /* MLNMapViewDelegate.h in Headers */, - DAF0D8191DFE6B2800B28378 /* MLNAttributionInfo_Private.h in Headers */, - DABFB86A1CBE99E500D62B32 /* MLNStyle.h in Headers */, - DA00FC8F1D5EEB0D009AABC8 /* MLNAttributionInfo.h in Headers */, - 96E516E12000551100A02306 /* MLNMultiPoint_Private.h in Headers */, - 3EA934623AD0000B7D99C3FB /* MLNRendererConfiguration.h in Headers */, - DACA86272019218600E9693A /* MLNRasterDEMSource.h in Headers */, - 9621F2502091020E005B3800 /* NSExpression+MLNAdditions.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 16376B061FFD9DAF0000563E /* integration */ = { - isa = PBXNativeTarget; - buildConfigurationList = 16376B101FFD9DAF0000563E /* Build configuration list for PBXNativeTarget "integration" */; - buildPhases = ( - 16376B031FFD9DAF0000563E /* Sources */, - 16376B041FFD9DAF0000563E /* Frameworks */, - 16376B051FFD9DAF0000563E /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 165D0CE620005351009A3C66 /* PBXTargetDependency */, - CABE5DAC2072FA660003AF3C /* PBXTargetDependency */, - ); - name = integration; - productName = "integration-tests"; - productReference = 16376B071FFD9DAF0000563E /* integration.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 16376B2E1FFDB4B40000563E /* Integration Test Harness */ = { - isa = PBXNativeTarget; - buildConfigurationList = 16376B421FFDB4B40000563E /* Build configuration list for PBXNativeTarget "Integration Test Harness" */; - buildPhases = ( - 16376B2B1FFDB4B40000563E /* Sources */, - 16376B2C1FFDB4B40000563E /* Frameworks */, - 16376B2D1FFDB4B40000563E /* Resources */, - CAA69DA6206DCD0E007279CD /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Integration Test Harness"; - productName = "Integration Test Harness"; - productReference = 16376B2F1FFDB4B40000563E /* Integration Test Harness.app */; - productType = "com.apple.product-type.application"; - }; - D717FE7625F1955A0054E06E /* iosapp UITests */ = { - isa = PBXNativeTarget; - buildConfigurationList = D717FE8125F1955A0054E06E /* Build configuration list for PBXNativeTarget "iosapp UITests" */; - buildPhases = ( - D717FE7325F1955A0054E06E /* Sources */, - D717FE7425F1955A0054E06E /* Frameworks */, - D717FE7525F1955A0054E06E /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - D717FE7D25F1955A0054E06E /* PBXTargetDependency */, - ); - name = "iosapp UITests"; - productName = "iosapp UITests"; - productReference = D717FE7725F1955A0054E06E /* iosapp UITests.xctest */; - productType = "com.apple.product-type.bundle.ui-testing"; - }; - D7E7CE8425F2EF6A00C175FC /* bench UITests */ = { - isa = PBXNativeTarget; - buildConfigurationList = D7E7CE8F25F2EF6A00C175FC /* Build configuration list for PBXNativeTarget "bench UITests" */; - buildPhases = ( - D7E7CE8125F2EF6A00C175FC /* Sources */, - D7E7CE8225F2EF6A00C175FC /* Frameworks */, - D7E7CE8325F2EF6A00C175FC /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - D7E7CE8B25F2EF6A00C175FC /* PBXTargetDependency */, - ); - name = "bench UITests"; - productName = "bench UITests"; - productReference = D7E7CE8525F2EF6A00C175FC /* bench UITests.xctest */; - productType = "com.apple.product-type.bundle.ui-testing"; - }; - DA1DC9491CB6C1C2006E619F /* iosapp */ = { - isa = PBXNativeTarget; - buildConfigurationList = DA1DC9611CB6C1C2006E619F /* Build configuration list for PBXNativeTarget "iosapp" */; - buildPhases = ( - DA1DC9461CB6C1C2006E619F /* Sources */, - DA1DC9471CB6C1C2006E619F /* Frameworks */, - DA1DC9481CB6C1C2006E619F /* Resources */, - 074A7F0B2277BD67001A62D1 /* Insert API Key */, - CA0FA9E62379C39C00C9F3C9 /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - CA94E5FE237D21030037AEA0 /* PBXTargetDependency */, - ); - name = iosapp; - productName = iosapp; - productReference = DA1DC94A1CB6C1C2006E619F /* MapLibre Native.app */; - productType = "com.apple.product-type.application"; - }; - DA2E88501CC036F400F24E7B /* test */ = { - isa = PBXNativeTarget; - buildConfigurationList = DA2E88591CC036F400F24E7B /* Build configuration list for PBXNativeTarget "test" */; - buildPhases = ( - DA2E884D1CC036F400F24E7B /* Sources */, - DA2E884E1CC036F400F24E7B /* Frameworks */, - DA2E884F1CC036F400F24E7B /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - DA2E88581CC036F400F24E7B /* PBXTargetDependency */, - ); - name = test; - productName = test; - productReference = DA2E88511CC036F400F24E7B /* test.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - DA8847D11CBAF91600AB86E3 /* dynamic */ = { - isa = PBXNativeTarget; - buildConfigurationList = DA8847DD1CBAF91600AB86E3 /* Build configuration list for PBXNativeTarget "dynamic" */; - buildPhases = ( - DA8847CD1CBAF91600AB86E3 /* Sources */, - DA8847CE1CBAF91600AB86E3 /* Frameworks */, - DA8847CF1CBAF91600AB86E3 /* Headers */, - DA8847D01CBAF91600AB86E3 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = dynamic; - productName = framework; - productReference = DA8847D21CBAF91600AB86E3 /* Mapbox.framework */; - productType = "com.apple.product-type.framework"; - }; - DA8933D41CCD306400E68420 /* bundle */ = { - isa = PBXNativeTarget; - buildConfigurationList = DA8933D81CCD306400E68420 /* Build configuration list for PBXNativeTarget "bundle" */; - buildPhases = ( - DA8933D31CCD306400E68420 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = bundle; - productName = bundle; - productReference = DA8933D51CCD306400E68420 /* Mapbox.bundle */; - productType = "com.apple.product-type.bundle"; - }; - DAA4E4121CBB71D400178DFB /* static */ = { - isa = PBXNativeTarget; - buildConfigurationList = DAA4E4191CBB71D500178DFB /* Build configuration list for PBXNativeTarget "static" */; - buildPhases = ( - DAA4E40F1CBB71D400178DFB /* Sources */, - DAA4E4101CBB71D400178DFB /* Frameworks */, - DAA4E4111CBB71D400178DFB /* CopyFiles */, - DABFB85C1CBE99DE00D62B32 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - DA25D5CA1CCDA0CC00607828 /* PBXTargetDependency */, - ); - name = static; - productName = static; - productReference = DAA4E4131CBB71D400178DFB /* libMapbox.a */; - productType = "com.apple.product-type.library.static"; - }; - DABCABA71CB80692000A7C39 /* bench */ = { - isa = PBXNativeTarget; - buildConfigurationList = DABCABBE1CB80692000A7C39 /* Build configuration list for PBXNativeTarget "bench" */; - buildPhases = ( - DABCABA41CB80692000A7C39 /* Sources */, - DABCABA51CB80692000A7C39 /* Frameworks */, - DABCABA61CB80692000A7C39 /* Resources */, - 07796BA2227908CB0059CAF1 /* Insert API Key */, - DAA4E40C1CBB6C9600178DFB /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - DAA4E40B1CBB6C9500178DFB /* PBXTargetDependency */, - ); - name = bench; - productName = bench; - productReference = DABCABA81CB80692000A7C39 /* Bench GL.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - DA1DC9421CB6C1C2006E619F /* Project object */ = { - isa = PBXProject; - attributes = { - CLASSPREFIX = MBX; - LastSwiftUpdateCheck = 1240; - LastUpgradeCheck = 1120; - ORGANIZATIONNAME = Mapbox; - TargetAttributes = { - 16376B061FFD9DAF0000563E = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 0940; - ProvisioningStyle = Automatic; - TestTargetID = DA1DC9491CB6C1C2006E619F; - }; - 16376B2E1FFDB4B40000563E = { - CreatedOnToolsVersion = 9.2; - DevelopmentTeam = GJZR2MEM28; - ProvisioningStyle = Automatic; - }; - D717FE7625F1955A0054E06E = { - CreatedOnToolsVersion = 12.4; - ProvisioningStyle = Automatic; - TestTargetID = DA1DC9491CB6C1C2006E619F; - }; - D7E7CE8425F2EF6A00C175FC = { - CreatedOnToolsVersion = 12.4; - ProvisioningStyle = Automatic; - TestTargetID = DABCABA71CB80692000A7C39; - }; - DA1DC9491CB6C1C2006E619F = { - CreatedOnToolsVersion = 7.3; - LastSwiftMigration = 0820; - ProvisioningStyle = Automatic; - }; - DA2E88501CC036F400F24E7B = { - CreatedOnToolsVersion = 7.3; - DevelopmentTeam = V6F7X5J9Y7; - LastSwiftMigration = 1010; - }; - DA8847D11CBAF91600AB86E3 = { - CreatedOnToolsVersion = 7.3; - LastSwiftMigration = 0820; - }; - DA8933D41CCD306400E68420 = { - CreatedOnToolsVersion = 7.3; - }; - DAA4E4121CBB71D400178DFB = { - CreatedOnToolsVersion = 7.3; - }; - DABCABA71CB80692000A7C39 = { - CreatedOnToolsVersion = 7.3; - DevelopmentTeam = KBDAWM7T4E; - ProvisioningStyle = Manual; - }; - }; - }; - buildConfigurationList = DA1DC9451CB6C1C2006E619F /* Build configuration list for PBXProject "ios" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - "zh-Hans", - "zh-Hant", - de, - fr, - ja, - sv, - vi, - "pt-BR", - es, - pl, - ru, - uk, - lt, - ca, - fi, - nl, - hu, - bg, - ar, - he, - da, - "pt-PT", - ko, - cs, - gl, - ); - mainGroup = DA1DC9411CB6C1C2006E619F; - productRefGroup = DA1DC94B1CB6C1C2006E619F /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - DA1DC9491CB6C1C2006E619F /* iosapp */, - DABCABA71CB80692000A7C39 /* bench */, - DA8847D11CBAF91600AB86E3 /* dynamic */, - DAA4E4121CBB71D400178DFB /* static */, - DA8933D41CCD306400E68420 /* bundle */, - DA2E88501CC036F400F24E7B /* test */, - 16376B061FFD9DAF0000563E /* integration */, - 16376B2E1FFDB4B40000563E /* Integration Test Harness */, - D717FE7625F1955A0054E06E /* iosapp UITests */, - D7E7CE8425F2EF6A00C175FC /* bench UITests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 16376B051FFD9DAF0000563E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 16376B471FFDB92B0000563E /* one-liner.json in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 16376B2D1FFDB4B40000563E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 16376B3E1FFDB4B40000563E /* LaunchScreen.storyboard in Resources */, - 16376B3B1FFDB4B40000563E /* Assets.xcassets in Resources */, - CABC52C22368CB5100B7E543 /* sideload_sat.db in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D717FE7525F1955A0054E06E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D7E7CE8325F2EF6A00C175FC /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DA1DC9481CB6C1C2006E619F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DD4823771D94AE6C00EB71B7 /* numeric_filter_style.json in Resources */, - A4F3FB1D2254865900A30170 /* missing_icon.json in Resources */, - DA1DC9701CB6C6CE006E619F /* points.geojson in Resources */, - 353BAEF61D646370009A8DA9 /* amsterdam.geojson in Resources */, - DA1DC9711CB6C6CE006E619F /* polyline.geojson in Resources */, - DD4823761D94AE6C00EB71B7 /* line_filter_style.json in Resources */, - 076171C72141A91700668A35 /* Settings.bundle in Resources */, - DA821D071CCC6D59007508D4 /* Main.storyboard in Resources */, - DA1DC9731CB6C6CE006E619F /* threestates.geojson in Resources */, - DA821D061CCC6D59007508D4 /* LaunchScreen.storyboard in Resources */, - 96E027231E57C76E004B8E66 /* Localizable.strings in Resources */, - 1F26B6C320E1A351007BCC21 /* simple_route.json in Resources */, - DD4823751D94AE6C00EB71B7 /* fill_filter_style.json in Resources */, - DA1DC99F1CB6E088006E619F /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DA2E884F1CC036F400F24E7B /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DA2784FC1DF02FF4001D5B8D /* Media.xcassets in Resources */, - 353BAEF71D646370009A8DA9 /* amsterdam.geojson in Resources */, - DA35D0881E1A6309007DED41 /* one-liner.json in Resources */, - DAC8A4822452971B00C795BB /* mixed.json in Resources */, - DAC8A48024527EDC00C795BB /* glyphs.pbf in Resources */, - 1F7839A6235E137000D4D606 /* sideload_sat.db in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DA8847D01CBAF91600AB86E3 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DA8933BC1CCD2CA100E68420 /* Foundation.strings in Resources */, - DA8933A31CCC95B000E68420 /* Localizable.strings in Resources */, - 960D0C361ECF5AAF008E151F /* Images.xcassets in Resources */, - DA8933F01CCD387900E68420 /* strip-frameworks.sh in Resources */, - DAC49C5C1CD02BC9009E1AA3 /* Localizable.stringsdict in Resources */, - DA8933BF1CCD2CAD00E68420 /* Foundation.stringsdict in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DA8933D31CCD306400E68420 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DA8933E01CCD31DF00E68420 /* Localizable.strings in Resources */, - DA8933DB1CCD31D400E68420 /* Foundation.strings in Resources */, - 960D0C371ECF5AAF008E151F /* Images.xcassets in Resources */, - DA8933DC1CCD31D400E68420 /* Foundation.stringsdict in Resources */, - DAC49C5D1CD02BC9009E1AA3 /* Localizable.stringsdict in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DABCABA61CB80692000A7C39 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DA89633A1CC549A100684375 /* tiles in Resources */, - DA8963391CC549A100684375 /* styles in Resources */, - DABCABBA1CB80692000A7C39 /* LaunchScreen.storyboard in Resources */, - 4B8A425B2656ED62008E725A /* insert_access_token.sh in Resources */, - DA8963381CC549A100684375 /* sprites in Resources */, - DABCABB71CB80692000A7C39 /* Assets.xcassets in Resources */, - DA8963371CC549A100684375 /* glyphs in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 074A7F0B2277BD67001A62D1 /* Insert API Key */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "$(TARGET_BUILD_DIR)/$(INFOPLIST_PATH)", - ); - name = "Insert API Key"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "$SRCROOT/app/insert_access_token.sh\n"; - }; - 07796BA2227908CB0059CAF1 /* Insert API Key */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "$(TARGET_BUILD_DIR)/$(INFOPLIST_PATH)", - ); - name = "Insert API Key"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "$SRCROOT/benchmark/insert_access_token.sh\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 16376B031FFD9DAF0000563E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - CA17464E23D8A93C008B7A43 /* MLNNetworkConfigurationIntegrationTests.mm in Sources */, - CA4EB8C720863487006AB465 /* MLNStyleLayerIntegrationTests.m in Sources */, - CA7766842229C11A0008DE9E /* SMCalloutView.m in Sources */, - 16376B0A1FFD9DAF0000563E /* MBGLIntegrationTests.mm in Sources */, - CA4F3BDE230F74C3008BAFEA /* MLNMapViewPendingBlockTests.m in Sources */, - CA88DC3021C85D900059ED5A /* MLNStyleURLIntegrationTest.m in Sources */, - CA0C27942076CA19001CE5B7 /* MLNMapViewIntegrationTest.m in Sources */, - CA7766832229C10E0008DE9E /* MLNCompactCalloutView.m in Sources */, - CAE7AD5520F46EF5003B6782 /* MLNMapSnapshotterSwiftTests.swift in Sources */, - CA0C27922076C804001CE5B7 /* MLNShapeSourceTests.m in Sources */, - 077061DA215DA00E000FEF62 /* MLNTestLocationManager.m in Sources */, - CA0B3C022329DE9A00E4B493 /* MLNTestAssertionHandler.m in Sources */, - CA6914B520E67F50002DB0EE /* MLNAnnotationViewIntegrationTests.mm in Sources */, - CA4F3BE223107793008BAFEA /* MLNCameraTransitionTests.mm in Sources */, - CA4C54FE2324948100A81659 /* MLNSourceTests.swift in Sources */, - CA1B4A512099FB2200EDD491 /* MLNMapSnapshotterTest.m in Sources */, - CA4F3BE4231077B9008BAFEA /* MLNCameraTransitionFinishTests.mm in Sources */, - CA600149242BD8360041BBEC /* MLNIntegrationTestCase.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 16376B2B1FFDB4B40000563E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 16376B411FFDB4B40000563E /* main.m in Sources */, - 16376B331FFDB4B40000563E /* AppDelegate.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D717FE7325F1955A0054E06E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D717FE7A25F1955A0054E06E /* iosapp_UITests.swift in Sources */, - D717FECB25F19F520054E06E /* XCTestCase+Extensions.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D7E7CE8125F2EF6A00C175FC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D7E7CE8825F2EF6A00C175FC /* bench_UITests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DA1DC9461CB6C1C2006E619F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DA1DC9971CB6E046006E619F /* main.m in Sources */, - 354B839C1D2E9B48005D9406 /* MBXUserLocationAnnotationView.m in Sources */, - 965DF51120F9430500438AAC /* MBXFrameTimeGraphView.m in Sources */, - DA1DC9991CB6E054006E619F /* MBXAppDelegate.m in Sources */, - 6FA9341721EF372100AA9CA8 /* MBXOrnamentsViewController.m in Sources */, - DA1DC96B1CB6C6B7006E619F /* MBXOfflinePacksTableViewController.m in Sources */, - 075AF845227B67C6008D7A4C /* MBXStateManager.m in Sources */, - DA1DC96A1CB6C6B7006E619F /* MBXCustomCalloutView.m in Sources */, - 075AF842227B6762008D7A4C /* MBXState.m in Sources */, - 927FBCFC1F4DAA8300F8BF1F /* MBXSnapshotsViewController.m in Sources */, - DA1DC99B1CB6E064006E619F /* MBXViewController.m in Sources */, - 40FDA76B1CCAAA6800442548 /* MBXAnnotationView.m in Sources */, - 1F26B6C120E189C9007BCC21 /* MBXCustomLocationViewController.m in Sources */, - 3E6465D62065767A00685536 /* LimeGreenStyleLayer.m in Sources */, - 632281DF1E6F855900D75A5D /* MBXEmbeddedMapViewController.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DA2E884D1CC036F400F24E7B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - A4DE3DCC23038CCA005B3473 /* MLNMockGestureRecognizers.m in Sources */, - A4DE3DCB23038C98005B3473 /* MLNMockGestureRecognizers.h in Sources */, - CAAA65D92321BBA900F08A39 /* MLNTestAssertionHandler.m in Sources */, - 6407D6701E0085FD00F6A9C3 /* MLNDocumentationExampleTests.swift in Sources */, - DA2E88631CC0382C00F24E7B /* MLNOfflineRegionTests.m in Sources */, - 409F43FD1E9E781C0048729D /* MLNMapViewDelegateIntegrationTests.swift in Sources */, - DAA4227E2429771D008457DB /* MLNMapSnapshotterTests.m in Sources */, - DA2E88651CC0382C00F24E7B /* MLNStyleTests.mm in Sources */, - DA2E88611CC0382C00F24E7B /* MLNGeometryTests.mm in Sources */, - 170C437D2029D97900863DF0 /* MLNHeatmapStyleLayerTests.mm in Sources */, - 170C437C2029D96F00863DF0 /* MLNHeatmapColorTests.mm in Sources */, - 357579801D501E09000B822E /* MLNFillStyleLayerTests.mm in Sources */, - 35D9DDE21DA25EEC00DAAD69 /* MLNCodingTests.mm in Sources */, - DA1F8F3D1EBD287B00367E42 /* MLNDocumentationGuideTests.swift in Sources */, - DA0E9F3F2411AC9B007C75D4 /* MLNImageTests.mm in Sources */, - 076171C32139C70900668A35 /* MLNMapViewTests.m in Sources */, - 3598544D1E1D38AA00B29F84 /* MLNDistanceFormatterTests.m in Sources */, - 071BBB071EE77631001FB02A /* MLNImageSourceTests.m in Sources */, - DA2DBBCE1D51E80400D38FF9 /* MLNStyleLayerTests.m in Sources */, - DA35A2C61CCA9F8300E826B2 /* MLNCompassDirectionFormatterTests.m in Sources */, - DAE7DEC21E245455007505A6 /* MLNNSStringAdditionsTests.m in Sources */, - CA86FF0E22D8D5A0009EB14A /* MLNNetworkConfigurationTests.m in Sources */, - 4085AF091D933DEA00F11B22 /* MLNTileSetTests.mm in Sources */, - DAEDC4341D603417000224FF /* MLNAttributionInfoTests.m in Sources */, - 1F7454A91ED08AB400021D39 /* MLNLightTest.mm in Sources */, - 357579851D502AF5000B822E /* MLNSymbolStyleLayerTests.mm in Sources */, - 357579871D502AFE000B822E /* MLNLineStyleLayerTests.mm in Sources */, - 357579891D502B06000B822E /* MLNCircleStyleLayerTests.mm in Sources */, - 40CFA6511D7875BB008103BD /* MLNShapeSourceTests.mm in Sources */, - DA35A2C51CCA9F8300E826B2 /* MLNClockDirectionFormatterTests.m in Sources */, - 35B8E08C1D6C8B5100E768D2 /* MLNPredicateTests.mm in Sources */, - 96E6145622CC135200109F14 /* MLNMapViewCompassViewTests.mm in Sources */, - 96036A0620059BBA00510F3D /* MLNNSOrthographyAdditionsTests.m in Sources */, - 1F95931D1E6DE2E900D5B294 /* MLNNSDateAdditionsTests.mm in Sources */, - DA695426215B1E76002041A4 /* MLNMapCameraTests.m in Sources */, - 96381C0222C6F3950053497D /* MLNMapViewPitchTests.m in Sources */, - CA8FBC0921A47BB100D1203C /* MLNRendererConfigurationTests.m in Sources */, - CAD9D0AA22A86D6F001B25EE /* MLNResourceTests.mm in Sources */, - DD58A4C61D822BD000E1F038 /* MLNExpressionTests.mm in Sources */, - 3575798B1D502B0C000B822E /* MLNBackgroundStyleLayerTests.mm in Sources */, - 9658C155204761FC00D8A674 /* MLNMapViewScaleBarTests.m in Sources */, - 409D0A0D1ED614CE00C95D0C /* MLNAnnotationViewIntegrationTests.swift in Sources */, - 9686D1BD22D9357700194EA0 /* MLNMapViewZoomTests.mm in Sources */, - DA2E88621CC0382C00F24E7B /* MLNOfflinePackTests.mm in Sources */, - 55E2AD131E5B125400E8C587 /* MLNOfflineStorageTests.mm in Sources */, - 07D8C6FF1F67562C00381808 /* MLNComputedShapeSourceTests.m in Sources */, - 920A3E5D1E6F995200C16EFC /* MLNSourceQueryTests.m in Sources */, - DA5DB12A1FABF1EE001C2326 /* MLNMapAccessibilityElementTests.m in Sources */, - 96ED34DE22374C0900E9FCA9 /* MLNMapViewDirectionTests.mm in Sources */, - 1F0196AA23174B0700F5C819 /* MLNMapViewContentInsetTests.m in Sources */, - FAE1CDCB1E9D79CB00C40B5B /* MLNFillExtrusionStyleLayerTests.mm in Sources */, - DA35A2AA1CCA058D00E826B2 /* MLNCoordinateFormatterTests.m in Sources */, - 357579831D502AE6000B822E /* MLNRasterStyleLayerTests.mm in Sources */, - DAF25720201902BC00367EF5 /* MLNHillshadeStyleLayerTests.mm in Sources */, - 1F8E8A81233A9FD9009B51ED /* MLNMapViewGestureRecognizerTests.mm in Sources */, - 353D23961D0B0DFE002BE09D /* MLNAnnotationViewTests.m in Sources */, - DA0CD5901CF56F6A00A5F5A5 /* MLNFeatureTests.mm in Sources */, - 556660D81E1D085500E2C41B /* MLNVersionNumber.m in Sources */, - 4031ACFF1E9FD29F00A3EA26 /* MLNSDKTestHelpers.swift in Sources */, - D4D7412E2760EEBA00102513 /* MLNMapProjectionTests.m in Sources */, - 16376B491FFEED010000563E /* MLNMapViewLayoutTests.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DA8847CD1CBAF91600AB86E3 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 35136D391D42271A00C20EFD /* MLNBackgroundStyleLayer.mm in Sources */, - 3510FFEC1D6D9C7A00F413B2 /* NSComparisonPredicate+MLNAdditions.mm in Sources */, - DAED38651D62D0FC00D7640F /* NSURL+MLNAdditions.m in Sources */, - 354B83981D2E873E005D9406 /* MLNUserLocationAnnotationView.m in Sources */, - DAD165701CF41981001FF4B9 /* MLNFeature.mm in Sources */, - 30E578191DAA855E0050F07E /* UIImage+MLNAdditions.mm in Sources */, - 550570C622958FB400228ECF /* MLNMapView+Impl.mm in Sources */, - 40EDA1C11CFE0E0500D9EA68 /* MLNAnnotationContainerView.m in Sources */, - 4BAB4DB1264E6DE200F015C1 /* MLNDefaultStyle.mm in Sources */, - DA8848541CBAFB9800AB86E3 /* MLNCompactCalloutView.m in Sources */, - DA8848251CBAFA6200AB86E3 /* MLNPointAnnotation.mm in Sources */, - 5580B45D229570A10091291B /* MLNMapView+OpenGL.mm in Sources */, - 929EFFAB1F56DCD4003A77D5 /* MLNAnnotationView.mm in Sources */, - 35136D3C1D42272500C20EFD /* MLNCircleStyleLayer.mm in Sources */, - DD9BE4F81EB263C50079A3AF /* UIViewController+MLNAdditions.m in Sources */, - 350098DE1D484E60004B2AF0 /* NSValue+MLNStyleAttributeAdditions.mm in Sources */, - DA6408DD1DA4E7D300908C90 /* MLNVectorStyleLayer.mm in Sources */, - 3566C7681D4A77BA008152BC /* MLNShapeSource.mm in Sources */, - 967C864D210A9D3C004DF794 /* UIDevice+MLNAdditions.m in Sources */, - 400533021DB0862B0069F638 /* NSArray+MLNAdditions.mm in Sources */, - 6F018BAE220031B8003E7269 /* UIView+MLNAdditions.m in Sources */, - D42DE1E6275F7FEB00B4446E /* MLNMapProjection.mm in Sources */, - 96036A03200565C700510F3D /* NSOrthography+MLNAdditions.m in Sources */, - 35136D421D42274500C20EFD /* MLNRasterStyleLayer.mm in Sources */, - 3538AA1F1D542239008EC33D /* MLNForegroundStyleLayer.mm in Sources */, - DA00FC901D5EEB0D009AABC8 /* MLNAttributionInfo.mm in Sources */, - DA88482D1CBAFA6200AB86E3 /* NSBundle+MLNAdditions.mm in Sources */, - 966FCF541F3C323300F2B6DE /* MLNUserLocationHeadingArrowLayer.m in Sources */, - DA88485B1CBAFB9800AB86E3 /* MLNUserLocation.m in Sources */, - 927FBD011F4DB05500F8BF1F /* MLNMapSnapshotter.mm in Sources */, - 350098BD1D480108004B2AF0 /* MLNVectorTileSource.mm in Sources */, - 3566C76E1D4A8DFA008152BC /* MLNRasterTileSource.mm in Sources */, - DA88488C1CBB037E00AB86E3 /* SMCalloutView.m in Sources */, - 35136D4E1D4277FC00C20EFD /* MLNSource.mm in Sources */, - 1F06668D1EC64F8E001C16D7 /* MLNLight.mm in Sources */, - DA35A2B81CCA9A5D00E826B2 /* MLNClockDirectionFormatter.m in Sources */, - DAD1657A1CF4CDFF001FF4B9 /* MLNShapeCollection.mm in Sources */, - DAF25719201901E200367EF5 /* MLNHillshadeStyleLayer.mm in Sources */, - 35136D451D42275100C20EFD /* MLNSymbolStyleLayer.mm in Sources */, - CF75A91522D85E860058A5C4 /* MLNLoggingConfiguration.mm in Sources */, - 35599DED1D46F14E0048254D /* MLNStyleValue.mm in Sources */, - DA8848211CBAFA6200AB86E3 /* MLNOfflinePack.mm in Sources */, - 0778DD441F67556C00A73B34 /* MLNComputedShapeSource.mm in Sources */, - 3557F7B21E1D27D300CCA5E6 /* MLNDistanceFormatter.m in Sources */, - 96E6145B22CC169000109F14 /* MLNCompassButton.mm in Sources */, - DA8848591CBAFB9800AB86E3 /* MLNMapView.mm in Sources */, - DA8848501CBAFB9800AB86E3 /* MLNAnnotationImage.m in Sources */, - DA8848281CBAFA6200AB86E3 /* MLNShape.mm in Sources */, - DA35A2B31CCA141D00E826B2 /* MLNCompassDirectionFormatter.m in Sources */, - DD0902A91DB1929D00C5BDCE /* MLNNetworkConfiguration.mm in Sources */, - 35D13AB91D3D15E300AFB4E0 /* MLNStyleLayer.mm in Sources */, - 74CB5EB3219B252C00102936 /* MLNStyleLayerManager.mm in Sources */, - DA35A2CB1CCAAAD200E826B2 /* NSValue+MLNAdditions.m in Sources */, - 4BC576C925E443CE006E06EB /* MLNFaux3DUserLocationAnnotationView.mm in Sources */, - 071BBB001EE7613F001FB02A /* MLNImageSource.mm in Sources */, - DA8848321CBAFA6200AB86E3 /* NSString+MLNAdditions.m in Sources */, - 408AA8581DAEDA1E00022900 /* NSDictionary+MLNAdditions.mm in Sources */, - DA35D9C0240916290013ECB0 /* MLNReachability.m in Sources */, - DA35A2A11CC9E95F00E826B2 /* MLNCoordinateFormatter.m in Sources */, - 92FC0AEE207CEE16007B6B54 /* MLNShapeOfflineRegion.mm in Sources */, - DA8848291CBAFA6200AB86E3 /* MLNStyle.mm in Sources */, - 357FE2DF1E02D2B20068B753 /* NSCoder+MLNAdditions.mm in Sources */, - 1FF48589223710BE00F19727 /* MLNAttributedExpression.m in Sources */, - DA88481C1CBAFA6200AB86E3 /* MLNGeometry.mm in Sources */, - 558DE7A21E5615E400C7916D /* MLNFoundation.mm in Sources */, - 4BAB4DA4264E6DCA00F015C1 /* MLNTileServerOptions.mm in Sources */, - 3510FFF21D6D9D8C00F413B2 /* NSExpression+MLNAdditions.mm in Sources */, - DA88481F1CBAFA6200AB86E3 /* MLNMultiPoint.mm in Sources */, - DA88482B1CBAFA6200AB86E3 /* MLNTypes.m in Sources */, - FA68F14D1E9D656600F9F6C2 /* MLNFillExtrusionStyleLayer.mm in Sources */, - 404C26E41D89B877000AA13D /* MLNTileSource.mm in Sources */, - 355AE0011E9281DA00F3939D /* MLNScaleBar.mm in Sources */, - DA88481D1CBAFA6200AB86E3 /* MLNMapCamera.mm in Sources */, - DACA86282019218600E9693A /* MLNRasterDEMSource.mm in Sources */, - DA8848261CBAFA6200AB86E3 /* MLNPolygon.mm in Sources */, - 35B82BFA1D6C5F8400B1B721 /* NSPredicate+MLNAdditions.mm in Sources */, - 966FCF4E1F3A5C9200F2B6DE /* MLNUserLocationHeadingBeamLayer.m in Sources */, - 8989B17E201A48EB0081CF59 /* MLNHeatmapStyleLayer.mm in Sources */, - 353AFA161D65AB17005A69F4 /* NSDate+MLNAdditions.mm in Sources */, - 1FCAE2A420B872A400C577DD /* MLNLocationManager.m in Sources */, - 35D13AC51D3D19DD00AFB4E0 /* MLNFillStyleLayer.mm in Sources */, - DA8848241CBAFA6200AB86E3 /* MLNOfflineStorage.mm in Sources */, - DA88482A1CBAFA6200AB86E3 /* MLNTilePyramidOfflineRegion.mm in Sources */, - 4049C29F1DB6CD6C00B3F799 /* MLNPointCollection.mm in Sources */, - 4BC5769525E3D3D6006E06EB /* MLNUserLocationAnnotationViewStyle.m in Sources */, - 35136D3F1D42273000C20EFD /* MLNLineStyleLayer.mm in Sources */, - DA704CC41F65A475004B3F28 /* MLNMapAccessibilityElement.mm in Sources */, - DA72620D1DEEE3480043BB89 /* MLNOpenGLStyleLayer.mm in Sources */, - DA88481A1CBAFA6200AB86E3 /* MLNSettings.mm in Sources */, - 3510FFFB1D6DCC4700F413B2 /* NSCompoundPredicate+MLNAdditions.mm in Sources */, - DA8848271CBAFA6200AB86E3 /* MLNPolyline.mm in Sources */, - 35CE61841D4165D9004F2359 /* UIColor+MLNAdditions.mm in Sources */, - 3EA93369F61CF70AFA50465D /* MLNRendererConfiguration.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DAA4E40F1CBB71D400178DFB /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 35136D3A1D42271A00C20EFD /* MLNBackgroundStyleLayer.mm in Sources */, - 3510FFED1D6D9C7A00F413B2 /* NSComparisonPredicate+MLNAdditions.mm in Sources */, - 354B83991D2E873E005D9406 /* MLNUserLocationAnnotationView.m in Sources */, - DAA4E4221CBB730400178DFB /* MLNPointAnnotation.mm in Sources */, - DAED38661D62D0FC00D7640F /* NSURL+MLNAdditions.m in Sources */, - DAD165711CF41981001FF4B9 /* MLNFeature.mm in Sources */, - 30E5781A1DAA855E0050F07E /* UIImage+MLNAdditions.mm in Sources */, - 40EDA1C21CFE0E0500D9EA68 /* MLNAnnotationContainerView.m in Sources */, - 4BAB4DB2264E6DE200F015C1 /* MLNDefaultStyle.mm in Sources */, - 550570C722958FB400228ECF /* MLNMapView+Impl.mm in Sources */, - DAA4E4291CBB730400178DFB /* NSBundle+MLNAdditions.mm in Sources */, - 35136D3D1D42272500C20EFD /* MLNCircleStyleLayer.mm in Sources */, - 5580B45E229570A10091291B /* MLNMapView+OpenGL.mm in Sources */, - DD9BE4FA1EB263F40079A3AF /* UIViewController+MLNAdditions.m in Sources */, - 350098DF1D484E60004B2AF0 /* NSValue+MLNStyleAttributeAdditions.mm in Sources */, - DA6408DE1DA4E7D300908C90 /* MLNVectorStyleLayer.mm in Sources */, - 3566C7691D4A77BA008152BC /* MLNShapeSource.mm in Sources */, - 400533031DB086490069F638 /* NSArray+MLNAdditions.mm in Sources */, - 35136D431D42274500C20EFD /* MLNRasterStyleLayer.mm in Sources */, - 967C864E210A9D3C004DF794 /* UIDevice+MLNAdditions.m in Sources */, - 96036A04200565C700510F3D /* NSOrthography+MLNAdditions.m in Sources */, - D42DE1E7275F7FEB00B4446E /* MLNMapProjection.mm in Sources */, - 6F018BB1220031C1003E7269 /* UIView+MLNAdditions.m in Sources */, - 3538AA201D542239008EC33D /* MLNForegroundStyleLayer.mm in Sources */, - DA00FC911D5EEB0D009AABC8 /* MLNAttributionInfo.mm in Sources */, - DAA4E4201CBB730400178DFB /* MLNOfflinePack.mm in Sources */, - 966FCF551F3C323500F2B6DE /* MLNUserLocationHeadingArrowLayer.m in Sources */, - DAA4E4331CBB730400178DFB /* MLNUserLocation.m in Sources */, - 927FBD021F4DB05500F8BF1F /* MLNMapSnapshotter.mm in Sources */, - 350098BE1D480108004B2AF0 /* MLNVectorTileSource.mm in Sources */, - 3566C76F1D4A8DFA008152BC /* MLNRasterTileSource.mm in Sources */, - DAA4E4351CBB730400178DFB /* SMCalloutView.m in Sources */, - 35136D4F1D4277FC00C20EFD /* MLNSource.mm in Sources */, - DA35A2B91CCA9A5D00E826B2 /* MLNClockDirectionFormatter.m in Sources */, - DAD1657B1CF4CDFF001FF4B9 /* MLNShapeCollection.mm in Sources */, - DAA4E4251CBB730400178DFB /* MLNShape.mm in Sources */, - 35136D461D42275100C20EFD /* MLNSymbolStyleLayer.mm in Sources */, - DAF2571A201901E200367EF5 /* MLNHillshadeStyleLayer.mm in Sources */, - 35599DEE1D46F14E0048254D /* MLNStyleValue.mm in Sources */, - DAA4E42B1CBB730400178DFB /* NSString+MLNAdditions.m in Sources */, - DAA4E4261CBB730400178DFB /* MLNStyle.mm in Sources */, - CF75A91622D85E860058A5C4 /* MLNLoggingConfiguration.mm in Sources */, - DAA32CC31E4C6B65006F8D24 /* MLNDistanceFormatter.m in Sources */, - DAA4E41D1CBB730400178DFB /* MLNGeometry.mm in Sources */, - DAA4E41F1CBB730400178DFB /* MLNMultiPoint.mm in Sources */, - 96E6145C22CC169000109F14 /* MLNCompassButton.mm in Sources */, - DD0902AA1DB1929D00C5BDCE /* MLNNetworkConfiguration.mm in Sources */, - DA35A2B41CCA141D00E826B2 /* MLNCompassDirectionFormatter.m in Sources */, - 35D13ABA1D3D15E300AFB4E0 /* MLNStyleLayer.mm in Sources */, - 071BBAFF1EE7613E001FB02A /* MLNImageSource.mm in Sources */, - DA35A2CC1CCAAAD200E826B2 /* NSValue+MLNAdditions.m in Sources */, - 408AA8591DAEDA1E00022900 /* NSDictionary+MLNAdditions.mm in Sources */, - 74CB5EB4219B252C00102936 /* MLNStyleLayerManager.mm in Sources */, - 4BC576CA25E443CE006E06EB /* MLNFaux3DUserLocationAnnotationView.mm in Sources */, - DAA4E4281CBB730400178DFB /* MLNTypes.m in Sources */, - DA35A2A21CC9E95F00E826B2 /* MLNCoordinateFormatter.m in Sources */, - 357FE2E01E02D2B20068B753 /* NSCoder+MLNAdditions.mm in Sources */, - 92FC0AEF207CEE16007B6B54 /* MLNShapeOfflineRegion.mm in Sources */, - DA35D9C1240916290013ECB0 /* MLNReachability.m in Sources */, - DAA4E42D1CBB730400178DFB /* MLNAnnotationImage.m in Sources */, - 558DE7A31E5615E400C7916D /* MLNFoundation.mm in Sources */, - 3510FFF31D6D9D8C00F413B2 /* NSExpression+MLNAdditions.mm in Sources */, - DAA4E4321CBB730400178DFB /* MLNMapView.mm in Sources */, - 1FF4858A223710BE00F19727 /* MLNAttributedExpression.m in Sources */, - DAA4E41E1CBB730400178DFB /* MLNMapCamera.mm in Sources */, - 4BAB4DA5264E6DCA00F015C1 /* MLNTileServerOptions.mm in Sources */, - FA68F14E1E9D656600F9F6C2 /* MLNFillExtrusionStyleLayer.mm in Sources */, - 1F7454921ECBB42C00021D39 /* MLNLight.mm in Sources */, - 404C26E51D89B877000AA13D /* MLNTileSource.mm in Sources */, - 355AE0021E9281DA00F3939D /* MLNScaleBar.mm in Sources */, - 4018B1C81CDC287F00F666AF /* MLNAnnotationView.mm in Sources */, - 07D8C6FB1F67560100381808 /* MLNComputedShapeSource.mm in Sources */, - DACA86292019218600E9693A /* MLNRasterDEMSource.mm in Sources */, - 35B82BFB1D6C5F8400B1B721 /* NSPredicate+MLNAdditions.mm in Sources */, - 966FCF4F1F3A5C9200F2B6DE /* MLNUserLocationHeadingBeamLayer.m in Sources */, - DAA4E4231CBB730400178DFB /* MLNPolygon.mm in Sources */, - 8989B17F201A48EB0081CF59 /* MLNHeatmapStyleLayer.mm in Sources */, - 353AFA171D65AB17005A69F4 /* NSDate+MLNAdditions.mm in Sources */, - 35D13AC61D3D19DD00AFB4E0 /* MLNFillStyleLayer.mm in Sources */, - 1FCAE2A520B872A400C577DD /* MLNLocationManager.m in Sources */, - DAA4E4211CBB730400178DFB /* MLNOfflineStorage.mm in Sources */, - 4049C2A01DB6CD6C00B3F799 /* MLNPointCollection.mm in Sources */, - 35136D401D42273000C20EFD /* MLNLineStyleLayer.mm in Sources */, - DA704CC51F65A475004B3F28 /* MLNMapAccessibilityElement.mm in Sources */, - 4BC5769625E3D3D6006E06EB /* MLNUserLocationAnnotationViewStyle.m in Sources */, - DA72620E1DEEE3480043BB89 /* MLNOpenGLStyleLayer.mm in Sources */, - DAA4E42F1CBB730400178DFB /* MLNCompactCalloutView.m in Sources */, - 3510FFFC1D6DCC4700F413B2 /* NSCompoundPredicate+MLNAdditions.mm in Sources */, - DAA4E4271CBB730400178DFB /* MLNTilePyramidOfflineRegion.mm in Sources */, - DAA4E41C1CBB730400178DFB /* MLNSettings.mm in Sources */, - 35CE61851D4165D9004F2359 /* UIColor+MLNAdditions.mm in Sources */, - DAA4E4241CBB730400178DFB /* MLNPolyline.mm in Sources */, - 3EA9366247780E4F252652A8 /* MLNRendererConfiguration.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DABCABA41CB80692000A7C39 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DABCABB21CB80692000A7C39 /* MBXBenchViewController.mm in Sources */, - DABCABAF1CB80692000A7C39 /* MBXBenchAppDelegate.m in Sources */, - DABCABC21CB8071D000A7C39 /* locations.cpp in Sources */, - DABCABAC1CB80692000A7C39 /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 165D0CE620005351009A3C66 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = DA8847D11CBAF91600AB86E3 /* dynamic */; - targetProxy = 165D0CE520005351009A3C66 /* PBXContainerItemProxy */; - }; - CA94E5FE237D21030037AEA0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = DA8847D11CBAF91600AB86E3 /* dynamic */; - targetProxy = CA94E5FD237D21030037AEA0 /* PBXContainerItemProxy */; - }; - CABE5DAC2072FA660003AF3C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 16376B2E1FFDB4B40000563E /* Integration Test Harness */; - targetProxy = CABE5DAB2072FA660003AF3C /* PBXContainerItemProxy */; - }; - D717FE7D25F1955A0054E06E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = DA1DC9491CB6C1C2006E619F /* iosapp */; - targetProxy = D717FE7C25F1955A0054E06E /* PBXContainerItemProxy */; - }; - D7E7CE8B25F2EF6A00C175FC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = DABCABA71CB80692000A7C39 /* bench */; - targetProxy = D7E7CE8A25F2EF6A00C175FC /* PBXContainerItemProxy */; - }; - DA25D5CA1CCDA0CC00607828 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = DA8933D41CCD306400E68420 /* bundle */; - targetProxy = DA25D5C91CCDA0CC00607828 /* PBXContainerItemProxy */; - }; - DA2E88581CC036F400F24E7B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = DA8847D11CBAF91600AB86E3 /* dynamic */; - targetProxy = DA2E88571CC036F400F24E7B /* PBXContainerItemProxy */; - }; - DAA4E40B1CBB6C9500178DFB /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = DA8847D11CBAF91600AB86E3 /* dynamic */; - targetProxy = DAA4E40A1CBB6C9500178DFB /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 16376B3C1FFDB4B40000563E /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 16376B3D1FFDB4B40000563E /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; - 96E027251E57C76E004B8E66 /* Localizable.strings */ = { - isa = PBXVariantGroup; - children = ( - 96E027241E57C76E004B8E66 /* Base */, - 96E027271E57C77A004B8E66 /* ja */, - 96E027281E57C7DB004B8E66 /* zh-Hans */, - 96E027291E57C7DE004B8E66 /* zh-Hant */, - 96E0272A1E57C7DF004B8E66 /* de */, - 96E0272B1E57C7E3004B8E66 /* sv */, - 96E0272C1E57C7E5004B8E66 /* fr */, - 96E0272D1E57C7E6004B8E66 /* vi */, - 96E0272E1E57C7E7004B8E66 /* pt-BR */, - 9660916B1E5BBFD700A9A03B /* es */, - 9660916C1E5BBFD900A9A03B /* pl */, - 9660916D1E5BBFDB00A9A03B /* ru */, - 9660916E1E5BBFDC00A9A03B /* uk */, - 9660916F1E5BBFDE00A9A03B /* lt */, - DA618B1A1E68883900CB7F44 /* ca */, - DA618B2B1E68932D00CB7F44 /* fi */, - DAE8CCAD1E6E8C70009B5CB0 /* nl */, - DA5C09BA1EFC48550056B178 /* hu */, - DA3389651FA3EE1B001EA329 /* bg */, - DA80E9601FE84AD90065FC9B /* ar */, - DACBC60B20118ABE00C4D7E2 /* he */, - DAD88E07202ACFE800AAA536 /* da */, - DA93409B208562EB0059919A /* pt-PT */, - DAFEB3742093AE3700A86A83 /* ko */, - 1FDB00C721F8F14E00D21389 /* cs */, - DAE9ED572238990A00C01291 /* gl */, - ); - name = Localizable.strings; - sourceTree = ""; - }; - DA89339F1CCC951200E68420 /* Localizable.strings */ = { - isa = PBXVariantGroup; - children = ( - DA8933A01CCC951200E68420 /* Base */, - 20DABE881DF78148007AC5FF /* zh-Hans */, - DAFBD0D31E3FA7A1000CD6BF /* zh-Hant */, - DAA32CA41E4C4502006F8D24 /* de */, - DAA32CAC1E4C4971006F8D24 /* fr */, - DAA32CB71E4C4ED8006F8D24 /* sv */, - DAA32CBC1E4C4F5D006F8D24 /* vi */, - DA9C012D1E4C7B1F00C4742A /* pt-BR */, - 968F36B41E4D0FC6003A5522 /* ja */, - DA737ADB1E5913BA00AD2CDE /* es */, - DA737AE71E59172C00AD2CDE /* ru */, - DA737AE91E5917C300AD2CDE /* uk */, - DA1AC01B1E5B8774006DF1D6 /* lt */, - DA618B1B1E68884E00CB7F44 /* ca */, - DA5C09BB1EFC486C0056B178 /* hu */, - DA3389681FA3EE48001EA329 /* bg */, - DACBC60D20118ADE00C4D7E2 /* he */, - DAD88E0A202AD03C00AAA536 /* da */, - DA93409D208563220059919A /* pt-PT */, - DAFEB3772093AE7900A86A83 /* ko */, - 1FDB00CA21F8F15100D21389 /* cs */, - DAE9ED5A2238993A00C01291 /* gl */, - ); - name = Localizable.strings; - sourceTree = ""; - }; - DA8933BA1CCD2CA100E68420 /* Foundation.strings */ = { - isa = PBXVariantGroup; - children = ( - DA8933BB1CCD2CA100E68420 /* Base */, - 20DABE861DF78148007AC5FF /* zh-Hans */, - DAFBD0D21E3FA7A1000CD6BF /* zh-Hant */, - DAA32CA31E4C44F1006F8D24 /* de */, - DAA32CB51E4C4CF4006F8D24 /* ja */, - DAA32CBD1E4C4F62006F8D24 /* vi */, - DA6023F11E4CE94300DBFF23 /* sv */, - DA618B1C1E6888EC00CB7F44 /* ca */, - DA618B251E68920500CB7F44 /* lt */, - DAE9E0F11EB7BF1B001E8E8B /* es */, - DA704CBB1F637311004B3F28 /* ru */, - DA704CC71F6663A3004B3F28 /* uk */, - DA33895F1FA3EAB7001EA329 /* pt-BR */, - DA3389661FA3EE28001EA329 /* bg */, - DACBC60C20118AD000C4D7E2 /* he */, - DAD88E08202AD01300AAA536 /* da */, - DAFEB3752093AE4800A86A83 /* ko */, - 1FDB00C821F8F14F00D21389 /* cs */, - DAE9ED582238992900C01291 /* gl */, - ); - name = Foundation.strings; - sourceTree = ""; - }; - DA8933BD1CCD2CAD00E68420 /* Foundation.stringsdict */ = { - isa = PBXVariantGroup; - children = ( - DA8933BE1CCD2CAD00E68420 /* en */, - DAA32CA11E4C44DB006F8D24 /* de */, - DAA32CAB1E4C491A006F8D24 /* fr */, - DA9C012C1E4C7ADB00C4742A /* pt-BR */, - DA6023F21E4CE94800DBFF23 /* sv */, - DA737ADA1E59139D00AD2CDE /* es */, - DA737AE01E59150A00AD2CDE /* pl */, - DA737AE51E5916D400AD2CDE /* ru */, - DA1AC0201E5B8917006DF1D6 /* uk */, - DA618B1D1E6888F500CB7F44 /* ca */, - DA618B261E68920D00CB7F44 /* lt */, - DACFE7981F66EA2100630DA8 /* vi */, - DA3389671FA3EE2F001EA329 /* bg */, - DA33896B1FA3EF4A001EA329 /* hu */, - DA80E9611FE84AEF0065FC9B /* ar */, - DAD88E09202AD01F00AAA536 /* da */, - DA93409C2085630C0059919A /* pt-PT */, - DAFEB3762093AE6800A86A83 /* ko */, - 1FDB00C921F8F15000D21389 /* cs */, - DAE9ED592238992E00C01291 /* gl */, - ); - name = Foundation.stringsdict; - sourceTree = ""; - }; - DABCABB81CB80692000A7C39 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - DABCABB91CB80692000A7C39 /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; - DAC49C5F1CD02BC9009E1AA3 /* Localizable.stringsdict */ = { - isa = PBXVariantGroup; - children = ( - DAC49C621CD07D74009E1AA3 /* en */, - DAA32CA21E4C44DD006F8D24 /* de */, - DAA32CA91E4C4919006F8D24 /* fr */, - DA9C012B1E4C7AD900C4742A /* pt-BR */, - DA618B111E68823600CB7F44 /* ru */, - DA618B191E68883700CB7F44 /* ca */, - 35DE35531EB7CBA8004917C5 /* sv */, - DA57D4AA1EBA8ED300793288 /* es */, - DA57D4AB1EBA909900793288 /* lt */, - DA57D4AC1EBA922A00793288 /* vi */, - DA704CBC1F637405004B3F28 /* uk */, - DA704CBD1F63746E004B3F28 /* zh-Hant */, - DA3389691FA3EE50001EA329 /* bg */, - DAD88E0B202AD04D00AAA536 /* da */, - DA93409E208563360059919A /* pt-PT */, - DAFEB3782093AE9200A86A83 /* ko */, - DAAE9B1C213A636B00F7D722 /* ar */, - 1FDB00CB21F8F15300D21389 /* cs */, - DAE9ED5B2238995A00C01291 /* gl */, - ); - name = Localizable.stringsdict; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 16376B0E1FFD9DAF0000563E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = "Integration Tests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.integration-tests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Integration Tests/integration-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Integration Test Harness.app/Integration Test Harness"; - }; - name = Debug; - }; - 16376B0F1FFD9DAF0000563E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = "Integration Tests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.integration-tests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Integration Tests/integration-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Integration Test Harness.app/Integration Test Harness"; - }; - name = Release; - }; - 16376B431FFDB4B40000563E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = "Integration Test Harness/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.Integration-Test-Harness"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 16376B441FFDB4B40000563E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = "Integration Test Harness/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.Integration-Test-Harness"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - 96AF1AA321B615A3007CB696 /* RelWithDebInfo */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - CLANG_CXX_LANGUAGE_STANDARD = "c++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 15256; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = c11; - GCC_PREPROCESSOR_DEFINITIONS = ""; - "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "-Wno-ambiguous-macro"; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SYMROOT = ../../build/ios; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = RelWithDebInfo; - }; - 96AF1AA421B615A3007CB696 /* RelWithDebInfo */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = ""; - GCC_PREPROCESSOR_DEFINITIONS = GLES_SILENCE_DEPRECATION; - INFOPLIST_FILE = app/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = org.maplibre.maplibregl; - PRODUCT_NAME = "MapLibre Native"; - PROVISIONING_PROFILE_SPECIFIER = ""; - }; - name = RelWithDebInfo; - }; - 96AF1AA521B615A3007CB696 /* RelWithDebInfo */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_CXX_LIBRARY = "libc++"; - CODE_SIGN_STYLE = Manual; - DEVELOPMENT_TEAM = KBDAWM7T4E; - HEADER_SEARCH_PATHS = ( - "$(PROJECT_DIR)/../../../../include", - "$(PROJECT_DIR)/../../../default/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/variant/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geometry.hpp/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geojson.hpp/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/optional", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/rapidjson/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/expected-lite/include", - "$(PROJECT_DIR)/../../../../vendor/polylabel/include", - "$(PROJECT_DIR)/../../../darwin/include", - "$(PROJECT_DIR)/../darwin/include", - ); - INFOPLIST_FILE = benchmark/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_GENERATE_MAP_FILE = YES; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = org.maplibre.bench; - PRODUCT_NAME = "Bench GL"; - PROVISIONING_PROFILE_SPECIFIER = "MapLibre Native Bench Development"; - }; - name = RelWithDebInfo; - }; - 96AF1AA621B615A3007CB696 /* RelWithDebInfo */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - BITCODE_GENERATION_MODE = bitcode; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 15256; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1"; - INFOPLIST_FILE = framework/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - LLVM_LTO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox; - PRODUCT_NAME = Mapbox; - SKIP_INSTALL = YES; - VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) "; - }; - name = RelWithDebInfo; - }; - 96AF1AA721B615A3007CB696 /* RelWithDebInfo */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - BITCODE_GENERATION_MODE = bitcode; - DEFINES_MODULE = YES; - DYLIB_CURRENT_VERSION = 15256; - HEADER_SEARCH_PATHS = ( - "$(PROJECT_DIR)/../../../../include", - "$(PROJECT_DIR)/../../../default/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/variant/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geometry.hpp/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geojson.hpp/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/optional", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/rapidjson/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/expected-lite/include", - "$(PROJECT_DIR)/../../../../vendor/polylabel/include", - "$(PROJECT_DIR)/../../../darwin/include", - "$(PROJECT_DIR)/../darwin/include", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)", - ); - LLVM_LTO = YES; - OTHER_LDFLAGS = ( - "-ObjC", - "$(mbgl_core_LINK_LIBRARIES)", - "$(mbgl_filesource_LINK_LIBRARIES)", - ); - PRODUCT_NAME = Mapbox; - PUBLIC_HEADERS_FOLDER_PATH = Headers; - SKIP_INSTALL = YES; - VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) "; - }; - name = RelWithDebInfo; - }; - 96AF1AA821B615A3007CB696 /* RelWithDebInfo */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = "framework/Info-static.plist"; - PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox; - PRODUCT_NAME = Mapbox; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = RelWithDebInfo; - }; - 96AF1AA921B615A3007CB696 /* RelWithDebInfo */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; - DEVELOPMENT_TEAM = V6F7X5J9Y7; - INFOPLIST_FILE = test/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - OTHER_CFLAGS = "-fvisibility=hidden"; - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "$(variant_cflags)", - "$(geometry_cflags)", - "$(geojson_cflags)", - ); - OTHER_LDFLAGS = ( - "$(mbgl_core_LINK_LIBRARIES)", - "$(mbgl_filesource_LINK_LIBRARIES)", - ); - OTHER_SWIFT_FLAGS = "-warnings-as-errors"; - PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.test; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "../darwin/test/test-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - }; - name = RelWithDebInfo; - }; - 96AF1AAA21B615A3007CB696 /* RelWithDebInfo */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = "Integration Tests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.integration-tests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Integration Tests/integration-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Integration Test Harness.app/Integration Test Harness"; - }; - name = RelWithDebInfo; - }; - 96AF1AAB21B615A3007CB696 /* RelWithDebInfo */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = GJZR2MEM28; - INFOPLIST_FILE = "Integration Test Harness/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.Integration-Test-Harness"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = RelWithDebInfo; - }; - D717FE7E25F1955A0054E06E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "iosapp UITests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.maplibre.iosapp-UITests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = iosapp; - }; - name = Debug; - }; - D717FE7F25F1955A0054E06E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_STYLE = Automatic; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "iosapp UITests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.maplibre.iosapp-UITests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = iosapp; - }; - name = Release; - }; - D717FE8025F1955A0054E06E /* RelWithDebInfo */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_STYLE = Automatic; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "iosapp UITests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.maplibre.iosapp-UITests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = iosapp; - }; - name = RelWithDebInfo; - }; - D7E7CE8C25F2EF6A00C175FC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_STYLE = Automatic; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "bench UITests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 14.4; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.maplibre.bench-UITests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = bench; - }; - name = Debug; - }; - D7E7CE8D25F2EF6A00C175FC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_STYLE = Automatic; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "bench UITests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 14.4; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.maplibre.bench-UITests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = bench; - }; - name = Release; - }; - D7E7CE8E25F2EF6A00C175FC /* RelWithDebInfo */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_STYLE = Automatic; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "bench UITests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 14.4; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.maplibre.bench-UITests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = bench; - }; - name = RelWithDebInfo; - }; - DA1DC95F1CB6C1C2006E619F /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - CLANG_CXX_LANGUAGE_STANDARD = "c++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 15256; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = c11; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "-Wno-ambiguous-macro"; - SDKROOT = iphoneos; - SYMROOT = ../../build/ios; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - DA1DC9601CB6C1C2006E619F /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - CLANG_CXX_LANGUAGE_STANDARD = "c++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 15256; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = c11; - GCC_PREPROCESSOR_DEFINITIONS = ""; - "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "-Wno-ambiguous-macro"; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SYMROOT = ../../build/ios; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; - DA1DC9621CB6C1C2006E619F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = ""; - GCC_PREPROCESSOR_DEFINITIONS = GLES_SILENCE_DEPRECATION; - INFOPLIST_FILE = app/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = org.maplibre.maplibregl; - PRODUCT_NAME = "MapLibre Native"; - PROVISIONING_PROFILE_SPECIFIER = ""; - }; - name = Debug; - }; - DA1DC9631CB6C1C2006E619F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = ""; - GCC_PREPROCESSOR_DEFINITIONS = GLES_SILENCE_DEPRECATION; - INFOPLIST_FILE = app/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = org.maplibre.maplibregl; - PRODUCT_NAME = "MapLibre Native"; - PROVISIONING_PROFILE_SPECIFIER = ""; - }; - name = Release; - }; - DA2E885A1CC036F400F24E7B /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; - DEVELOPMENT_TEAM = V6F7X5J9Y7; - INFOPLIST_FILE = test/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - OTHER_CFLAGS = "-fvisibility=hidden"; - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "$(variant_cflags)", - "$(geometry_cflags)", - "$(geojson_cflags)", - ); - OTHER_LDFLAGS = ( - "$(mbgl_core_LINK_LIBRARIES)", - "$(mbgl_filesource_LINK_LIBRARIES)", - ); - OTHER_SWIFT_FLAGS = "-warnings-as-errors"; - PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.test; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "../darwin/test/test-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - DA2E885B1CC036F400F24E7B /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; - DEVELOPMENT_TEAM = V6F7X5J9Y7; - INFOPLIST_FILE = test/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - OTHER_CFLAGS = "-fvisibility=hidden"; - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "$(variant_cflags)", - "$(geometry_cflags)", - "$(geojson_cflags)", - ); - OTHER_LDFLAGS = ( - "$(mbgl_core_LINK_LIBRARIES)", - "$(mbgl_filesource_LINK_LIBRARIES)", - ); - OTHER_SWIFT_FLAGS = "-warnings-as-errors"; - PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.test; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "../darwin/test/test-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - DA8847DB1CBAF91600AB86E3 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - BITCODE_GENERATION_MODE = bitcode; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 15256; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREPROCESSOR_DEFINITIONS = GLES_SILENCE_DEPRECATION; - INFOPLIST_FILE = framework/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox; - PRODUCT_NAME = Mapbox; - SKIP_INSTALL = YES; - VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) "; - }; - name = Debug; - }; - DA8847DC1CBAF91600AB86E3 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - BITCODE_GENERATION_MODE = bitcode; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - DEFINES_MODULE = YES; - DEPLOYMENT_POSTPROCESSING = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 15256; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREPROCESSOR_DEFINITIONS = GLES_SILENCE_DEPRECATION; - INFOPLIST_FILE = framework/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - LLVM_LTO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox; - PRODUCT_NAME = Mapbox; - SKIP_INSTALL = YES; - STRIP_STYLE = "non-global"; - VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) "; - }; - name = Release; - }; - DA8933D91CCD306400E68420 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = "framework/Info-static.plist"; - PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox; - PRODUCT_NAME = Mapbox; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - DA8933DA1CCD306400E68420 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = "framework/Info-static.plist"; - PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox; - PRODUCT_NAME = Mapbox; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - DAA4E41A1CBB71D500178DFB /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - BITCODE_GENERATION_MODE = bitcode; - DEFINES_MODULE = YES; - DYLIB_CURRENT_VERSION = 15256; - HEADER_SEARCH_PATHS = ( - "$(PROJECT_DIR)/../../../../include", - "$(PROJECT_DIR)/../../../default/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/variant/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geometry.hpp/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geojson.hpp/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/optional", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/rapidjson/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/expected-lite/include", - "$(PROJECT_DIR)/../../../../vendor/polylabel/include", - "$(PROJECT_DIR)/../../../darwin/include", - "$(PROJECT_DIR)/../darwin/include", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)", - ); - OTHER_LDFLAGS = ( - "-ObjC", - "$(mbgl_core_LINK_LIBRARIES)", - "$(mbgl_filesource_LINK_LIBRARIES)", - ); - PRODUCT_NAME = Mapbox; - PUBLIC_HEADERS_FOLDER_PATH = Headers; - SKIP_INSTALL = YES; - VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) "; - }; - name = Debug; - }; - DAA4E41B1CBB71D500178DFB /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - BITCODE_GENERATION_MODE = bitcode; - DEFINES_MODULE = YES; - DEPLOYMENT_POSTPROCESSING = YES; - DYLIB_CURRENT_VERSION = 15256; - HEADER_SEARCH_PATHS = ( - "$(PROJECT_DIR)/../../../../include", - "$(PROJECT_DIR)/../../../default/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/variant/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geometry.hpp/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geojson.hpp/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/optional", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/rapidjson/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/expected-lite/include", - "$(PROJECT_DIR)/../../../../vendor/polylabel/include", - "$(PROJECT_DIR)/../../../darwin/include", - "$(PROJECT_DIR)/../darwin/include", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)", - ); - LLVM_LTO = YES; - OTHER_LDFLAGS = ( - "-ObjC", - "$(mbgl_core_LINK_LIBRARIES)", - "$(mbgl_filesource_LINK_LIBRARIES)", - ); - PRODUCT_NAME = Mapbox; - PUBLIC_HEADERS_FOLDER_PATH = Headers; - SKIP_INSTALL = YES; - STRIP_STYLE = "non-global"; - VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) "; - }; - name = Release; - }; - DABCABBC1CB80692000A7C39 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_CXX_LIBRARY = "libc++"; - CODE_SIGN_STYLE = Manual; - DEVELOPMENT_TEAM = KBDAWM7T4E; - HEADER_SEARCH_PATHS = ( - "$(PROJECT_DIR)/../../../../include", - "$(PROJECT_DIR)/../../../default/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/variant/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geometry.hpp/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geojson.hpp/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/optional", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/rapidjson/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/expected-lite/include", - "$(PROJECT_DIR)/../../../../vendor/polylabel/include", - "$(PROJECT_DIR)/../../../darwin/include", - "$(PROJECT_DIR)/../darwin/include", - ); - INFOPLIST_FILE = benchmark/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_GENERATE_MAP_FILE = YES; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = org.maplibre.bench; - PRODUCT_NAME = "Bench GL"; - PROVISIONING_PROFILE_SPECIFIER = "MapLibre Native Bench Development"; - }; - name = Debug; - }; - DABCABBD1CB80692000A7C39 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_CXX_LIBRARY = "libc++"; - CODE_SIGN_STYLE = Manual; - DEVELOPMENT_TEAM = KBDAWM7T4E; - HEADER_SEARCH_PATHS = ( - "$(PROJECT_DIR)/../../../../include", - "$(PROJECT_DIR)/../../../default/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/variant/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geometry.hpp/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geojson.hpp/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/optional", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/rapidjson/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/expected-lite/include", - "$(PROJECT_DIR)/../../../../vendor/polylabel/include", - "$(PROJECT_DIR)/../../../darwin/include", - "$(PROJECT_DIR)/../darwin/include", - ); - INFOPLIST_FILE = benchmark/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_GENERATE_MAP_FILE = YES; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = org.maplibre.bench; - PRODUCT_NAME = "Bench GL"; - PROVISIONING_PROFILE_SPECIFIER = "MapLibre Native Bench Development"; - }; - name = Release; - }; - FA8AD4F329DCC3C500230E00 /* MinSizeRel */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - CLANG_CXX_LANGUAGE_STANDARD = "c++17"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 15256; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = c11; - GCC_PREPROCESSOR_DEFINITIONS = ""; - "GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "-Wno-ambiguous-macro"; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SYMROOT = ../../build/ios; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = MinSizeRel; - }; - FA8AD4F429DCC3C500230E00 /* MinSizeRel */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO; - CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = ""; - GCC_OPTIMIZATION_LEVEL = z; - GCC_PREPROCESSOR_DEFINITIONS = GLES_SILENCE_DEPRECATION; - INFOPLIST_FILE = app/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = org.maplibre.maplibregl; - PRODUCT_NAME = "MapLibre Native"; - PROVISIONING_PROFILE_SPECIFIER = ""; - }; - name = MinSizeRel; - }; - FA8AD4F529DCC3C500230E00 /* MinSizeRel */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_CXX_LIBRARY = "libc++"; - CODE_SIGN_STYLE = Manual; - DEVELOPMENT_TEAM = KBDAWM7T4E; - HEADER_SEARCH_PATHS = ( - "$(PROJECT_DIR)/../../../../include", - "$(PROJECT_DIR)/../../../default/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/variant/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geometry.hpp/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geojson.hpp/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/optional", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/rapidjson/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/expected-lite/include", - "$(PROJECT_DIR)/../../../../vendor/polylabel/include", - "$(PROJECT_DIR)/../../../darwin/include", - "$(PROJECT_DIR)/../darwin/include", - ); - INFOPLIST_FILE = benchmark/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_GENERATE_MAP_FILE = YES; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = org.maplibre.bench; - PRODUCT_NAME = "Bench GL"; - PROVISIONING_PROFILE_SPECIFIER = "MapLibre Native Bench Development"; - }; - name = MinSizeRel; - }; - FA8AD4F629DCC3C500230E00 /* MinSizeRel */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD)"; - BITCODE_GENERATION_MODE = bitcode; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - DEFINES_MODULE = YES; - DEPLOYMENT_POSTPROCESSING = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 15256; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_OPTIMIZATION_LEVEL = z; - GCC_PREPROCESSOR_DEFINITIONS = GLES_SILENCE_DEPRECATION; - INFOPLIST_FILE = framework/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - LLVM_LTO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox; - PRODUCT_NAME = Mapbox; - SKIP_INSTALL = YES; - STRIP_STYLE = "non-global"; - VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) "; - }; - name = MinSizeRel; - }; - FA8AD4F729DCC3C500230E00 /* MinSizeRel */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - BITCODE_GENERATION_MODE = bitcode; - DEFINES_MODULE = YES; - DEPLOYMENT_POSTPROCESSING = YES; - DYLIB_CURRENT_VERSION = 15256; - GCC_OPTIMIZATION_LEVEL = z; - HEADER_SEARCH_PATHS = ( - "$(PROJECT_DIR)/../../../../include", - "$(PROJECT_DIR)/../../../default/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/variant/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geometry.hpp/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/geojson.hpp/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/deps/optional", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/rapidjson/include", - "$(PROJECT_DIR)/../../../../vendor/mapbox-base/extras/expected-lite/include", - "$(PROJECT_DIR)/../../../../vendor/polylabel/include", - "$(PROJECT_DIR)/../../../darwin/include", - "$(PROJECT_DIR)/../darwin/include", - ); - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)", - ); - LLVM_LTO = YES; - OTHER_LDFLAGS = ( - "-ObjC", - "$(mbgl_core_LINK_LIBRARIES)", - "$(mbgl_filesource_LINK_LIBRARIES)", - ); - PRODUCT_NAME = Mapbox; - PUBLIC_HEADERS_FOLDER_PATH = Headers; - SKIP_INSTALL = YES; - STRIP_STYLE = "non-global"; - VERSION_INFO_PREFIX = "__attribute__((visibility (\"default\"))) "; - }; - name = MinSizeRel; - }; - FA8AD4F829DCC3C500230E00 /* MinSizeRel */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_OPTIMIZATION_LEVEL = z; - INFOPLIST_FILE = "framework/Info-static.plist"; - PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.Mapbox; - PRODUCT_NAME = Mapbox; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = MinSizeRel; - }; - FA8AD4F929DCC3C500230E00 /* MinSizeRel */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - CLANG_ENABLE_MODULES = YES; - "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; - DEVELOPMENT_TEAM = V6F7X5J9Y7; - INFOPLIST_FILE = test/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - OTHER_CFLAGS = "-fvisibility=hidden"; - OTHER_CPLUSPLUSFLAGS = ( - "$(OTHER_CFLAGS)", - "$(variant_cflags)", - "$(geometry_cflags)", - "$(geojson_cflags)", - ); - OTHER_LDFLAGS = ( - "$(mbgl_core_LINK_LIBRARIES)", - "$(mbgl_filesource_LINK_LIBRARIES)", - ); - OTHER_SWIFT_FLAGS = "-warnings-as-errors"; - PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.test; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "../darwin/test/test-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - }; - name = MinSizeRel; - }; - FA8AD4FA29DCC3C500230E00 /* MinSizeRel */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_MODULES = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = "Integration Tests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.integration-tests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Integration Tests/integration-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Integration Test Harness.app/Integration Test Harness"; - }; - name = MinSizeRel; - }; - FA8AD4FB29DCC3C500230E00 /* MinSizeRel */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CAE5AE2B2389FBF000E4A5A1 /* ios.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - INFOPLIST_FILE = "Integration Test Harness/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = "com.mapbox.Integration-Test-Harness"; - PRODUCT_NAME = "$(TARGET_NAME)"; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = MinSizeRel; - }; - FA8AD4FC29DCC3C500230E00 /* MinSizeRel */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_STYLE = Automatic; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "iosapp UITests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.maplibre.iosapp-UITests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = iosapp; - }; - name = MinSizeRel; - }; - FA8AD4FD29DCC3C500230E00 /* MinSizeRel */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_STYLE = Automatic; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "bench UITests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 14.4; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "org.maplibre.bench-UITests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = bench; - }; - name = MinSizeRel; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 16376B101FFD9DAF0000563E /* Build configuration list for PBXNativeTarget "integration" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 16376B0E1FFD9DAF0000563E /* Debug */, - 16376B0F1FFD9DAF0000563E /* Release */, - FA8AD4FA29DCC3C500230E00 /* MinSizeRel */, - 96AF1AAA21B615A3007CB696 /* RelWithDebInfo */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = RelWithDebInfo; - }; - 16376B421FFDB4B40000563E /* Build configuration list for PBXNativeTarget "Integration Test Harness" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 16376B431FFDB4B40000563E /* Debug */, - 16376B441FFDB4B40000563E /* Release */, - FA8AD4FB29DCC3C500230E00 /* MinSizeRel */, - 96AF1AAB21B615A3007CB696 /* RelWithDebInfo */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = RelWithDebInfo; - }; - D717FE8125F1955A0054E06E /* Build configuration list for PBXNativeTarget "iosapp UITests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D717FE7E25F1955A0054E06E /* Debug */, - D717FE7F25F1955A0054E06E /* Release */, - FA8AD4FC29DCC3C500230E00 /* MinSizeRel */, - D717FE8025F1955A0054E06E /* RelWithDebInfo */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = RelWithDebInfo; - }; - D7E7CE8F25F2EF6A00C175FC /* Build configuration list for PBXNativeTarget "bench UITests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D7E7CE8C25F2EF6A00C175FC /* Debug */, - D7E7CE8D25F2EF6A00C175FC /* Release */, - FA8AD4FD29DCC3C500230E00 /* MinSizeRel */, - D7E7CE8E25F2EF6A00C175FC /* RelWithDebInfo */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = RelWithDebInfo; - }; - DA1DC9451CB6C1C2006E619F /* Build configuration list for PBXProject "ios" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - DA1DC95F1CB6C1C2006E619F /* Debug */, - DA1DC9601CB6C1C2006E619F /* Release */, - FA8AD4F329DCC3C500230E00 /* MinSizeRel */, - 96AF1AA321B615A3007CB696 /* RelWithDebInfo */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = RelWithDebInfo; - }; - DA1DC9611CB6C1C2006E619F /* Build configuration list for PBXNativeTarget "iosapp" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - DA1DC9621CB6C1C2006E619F /* Debug */, - DA1DC9631CB6C1C2006E619F /* Release */, - FA8AD4F429DCC3C500230E00 /* MinSizeRel */, - 96AF1AA421B615A3007CB696 /* RelWithDebInfo */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = RelWithDebInfo; - }; - DA2E88591CC036F400F24E7B /* Build configuration list for PBXNativeTarget "test" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - DA2E885A1CC036F400F24E7B /* Debug */, - DA2E885B1CC036F400F24E7B /* Release */, - FA8AD4F929DCC3C500230E00 /* MinSizeRel */, - 96AF1AA921B615A3007CB696 /* RelWithDebInfo */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = RelWithDebInfo; - }; - DA8847DD1CBAF91600AB86E3 /* Build configuration list for PBXNativeTarget "dynamic" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - DA8847DB1CBAF91600AB86E3 /* Debug */, - DA8847DC1CBAF91600AB86E3 /* Release */, - FA8AD4F629DCC3C500230E00 /* MinSizeRel */, - 96AF1AA621B615A3007CB696 /* RelWithDebInfo */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = RelWithDebInfo; - }; - DA8933D81CCD306400E68420 /* Build configuration list for PBXNativeTarget "bundle" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - DA8933D91CCD306400E68420 /* Debug */, - DA8933DA1CCD306400E68420 /* Release */, - FA8AD4F829DCC3C500230E00 /* MinSizeRel */, - 96AF1AA821B615A3007CB696 /* RelWithDebInfo */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = RelWithDebInfo; - }; - DAA4E4191CBB71D500178DFB /* Build configuration list for PBXNativeTarget "static" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - DAA4E41A1CBB71D500178DFB /* Debug */, - DAA4E41B1CBB71D500178DFB /* Release */, - FA8AD4F729DCC3C500230E00 /* MinSizeRel */, - 96AF1AA721B615A3007CB696 /* RelWithDebInfo */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = RelWithDebInfo; - }; - DABCABBE1CB80692000A7C39 /* Build configuration list for PBXNativeTarget "bench" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - DABCABBC1CB80692000A7C39 /* Debug */, - DABCABBD1CB80692000A7C39 /* Release */, - FA8AD4F529DCC3C500230E00 /* MinSizeRel */, - 96AF1AA521B615A3007CB696 /* RelWithDebInfo */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = RelWithDebInfo; - }; -/* End XCConfigurationList section */ - }; - rootObject = DA1DC9421CB6C1C2006E619F /* Project object */; -} diff --git a/platform/ios/platform/ios/ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/platform/ios/platform/ios/ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 92ad79b9d..000000000 --- a/platform/ios/platform/ios/ios.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme b/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme deleted file mode 100644 index 3d3b37bb3..000000000 --- a/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/CI.xcscheme +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/Integration Test Harness.xcscheme b/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/Integration Test Harness.xcscheme deleted file mode 100644 index 47f31354b..000000000 --- a/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/Integration Test Harness.xcscheme +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/bench.xcscheme b/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/bench.xcscheme deleted file mode 100644 index e41c6f24c..000000000 --- a/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/bench.xcscheme +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic+static.xcscheme b/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic+static.xcscheme deleted file mode 100644 index a52e5e17c..000000000 --- a/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic+static.xcscheme +++ /dev/null @@ -1,134 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme b/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme deleted file mode 100644 index a7eca4461..000000000 --- a/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iosapp.xcscheme b/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iosapp.xcscheme deleted file mode 100644 index f5eb3b67d..000000000 --- a/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/iosapp.xcscheme +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/static.xcscheme b/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/static.xcscheme deleted file mode 100644 index 6960cc51e..000000000 --- a/platform/ios/platform/ios/ios.xcodeproj/xcshareddata/xcschemes/static.xcscheme +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/platform/ios/platform/ios/ios.xcworkspace/contents.xcworkspacedata b/platform/ios/platform/ios/ios.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 165dd40ea..000000000 --- a/platform/ios/platform/ios/ios.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/platform/ios/platform/ios/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/platform/ios/platform/ios/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/platform/ios/platform/ios/ios.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/platform/ios/platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist b/platform/ios/platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index 96eb7c870..000000000 --- a/platform/ios/platform/ios/ios.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/platform/ios/platform/ios/toolchain.cmake b/platform/ios/platform/ios/toolchain.cmake deleted file mode 100644 index edf5a106e..000000000 --- a/platform/ios/platform/ios/toolchain.cmake +++ /dev/null @@ -1,927 +0,0 @@ -# This file is part of the ios-cmake project. It was retrieved from -# https://github.com/leetal/ios-cmake.git, which is a fork of -# https://github.com/gerstrong/ios-cmake.git, which is a fork of -# https://github.com/cristeab/ios-cmake.git, which is a fork of -# https://code.google.com/p/ios-cmake/. Which in turn is based off of -# the Platform/Darwin.cmake and Platform/UnixPaths.cmake files which -# are included with CMake 2.8.4 -# -# The ios-cmake project is licensed under the new BSD license. -# -# Copyright (c) 2014, Bogdan Cristea and LTE Engineering Software, -# Kitware, Inc., Insight Software Consortium. All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# -# This file is based off of the Platform/Darwin.cmake and -# Platform/UnixPaths.cmake files which are included with CMake 2.8.4 -# It has been altered for iOS development. -# -# Updated by Alex Stewart (alexs.mac@gmail.com) -# -# ***************************************************************************** -# Now maintained by Alexander Widerberg (widerbergaren [at] gmail.com) -# under the BSD-3-Clause license -# https://github.com/leetal/ios-cmake -# ***************************************************************************** -# -# INFORMATION / HELP -# -# The following options control the behaviour of this toolchain: -# -# PLATFORM: (default "OS64") -# OS = Build for iPhoneOS. -# OS64 = Build for arm64 iphoneOS. -# OS64COMBINED = Build for arm64 x86_64 iphoneOS. Combined into FAT STATIC lib (supported on 3.14+ of CMakewith "-G Xcode" argument ONLY) -# SIMULATOR = Build for x86 i386 iphoneOS Simulator. -# SIMULATOR64 = Build for x86_64 iphoneOS Simulator. -# SIMULATORARM64 = Build for arm64 iphoneOS Simulator. -# TVOS = Build for arm64 tvOS. -# TVOSCOMBINED = Build for arm64 x86_64 tvOS. Combined into FAT STATIC lib (supported on 3.14+ of CMake with "-G Xcode" argument ONLY) -# SIMULATOR_TVOS = Build for x86_64 tvOS Simulator. -# WATCHOS = Build for armv7k arm64_32 for watchOS. -# WATCHOSCOMBINED = Build for armv7k arm64_32 x86_64 watchOS. Combined into FAT STATIC lib (supported on 3.14+ of CMake with "-G Xcode" argument ONLY) -# SIMULATOR_WATCHOS = Build for x86_64 for watchOS Simulator. -# MAC = Build for x86_64 macOS. -# MAC_ARM64 = Build for Apple Silicon macOS. -# MAC_CATALYST = Build for x86_64 macOS with Catalyst support (iOS toolchain on macOS). -# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS -# MAC_CATALYST_ARM64 = Build for Apple Silicon macOS with Catalyst support (iOS toolchain on macOS). -# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS -# -# CMAKE_OSX_SYSROOT: Path to the SDK to use. By default this is -# automatically determined from PLATFORM and xcodebuild, but -# can also be manually specified (although this should not be required). -# -# CMAKE_DEVELOPER_ROOT: Path to the Developer directory for the platform -# being compiled for. By default this is automatically determined from -# CMAKE_OSX_SYSROOT, but can also be manually specified (although this should -# not be required). -# -# DEPLOYMENT_TARGET: Minimum SDK version to target. Default 2.0 on watchOS and 9.0 on tvOS+iOS -# -# ENABLE_BITCODE: (1|0) Enables or disables bitcode support. Default 1 (true) -# -# ENABLE_ARC: (1|0) Enables or disables ARC support. Default 1 (true, ARC enabled by default) -# -# ENABLE_VISIBILITY: (1|0) Enables or disables symbol visibility support. Default 0 (false, visibility hidden by default) -# -# ENABLE_STRICT_TRY_COMPILE: (1|0) Enables or disables strict try_compile() on all Check* directives (will run linker -# to actually check if linking is possible). Default 0 (false, will set CMAKE_TRY_COMPILE_TARGET_TYPE to STATIC_LIBRARY) -# -# ARCHS: (armv7 armv7s armv7k arm64 arm64_32 i386 x86_64) If specified, will override the default architectures for the given PLATFORM -# OS = armv7 armv7s arm64 (if applicable) -# OS64 = arm64 (if applicable) -# SIMULATOR = i386 -# SIMULATOR64 = x86_64 -# SIMULATORARM64 = arm64 -# TVOS = arm64 -# SIMULATOR_TVOS = x86_64 (i386 has since long been deprecated) -# WATCHOS = armv7k arm64_32 (if applicable) -# SIMULATOR_WATCHOS = x86_64 (i386 has since long been deprecated) -# MAC = x86_64 -# MAC_ARM64 = arm64 -# MAC_CATALYST = x86_64 -# MAC_CATALYST_ARM64 = arm64 -# -# This toolchain defines the following properties (available via get_property()) for use externally: -# -# PLATFORM: The currently targeted platform. -# XCODE_VERSION: Version number (not including Build version) of Xcode detected. -# SDK_VERSION: Version of SDK being used. -# OSX_ARCHITECTURES: Architectures being compiled for (generated from PLATFORM). -# APPLE_TARGET_TRIPLE: Used by autoconf build systems. NOTE: If "ARCHS" are overridden, this will *NOT* be set! -# -# This toolchain defines the following macros for use externally: -# -# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE XCODE_VARIANT) -# A convenience macro for setting xcode specific properties on targets. -# Available variants are: All, Release, RelWithDebInfo, Debug, MinSizeRel -# example: set_xcode_property (myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1" "all"). -# -# find_host_package (PROGRAM ARGS) -# A macro used to find executable programs on the host system, not within the -# environment. Thanks to the android-cmake project for providing the -# command. -# - -cmake_minimum_required(VERSION 3.8.0) - -# CMake invokes the toolchain file twice during the first build, but only once during subsequent rebuilds. -if(IOS_TOOLCHAIN_HAS_RUN) - return() -endif(IOS_TOOLCHAIN_HAS_RUN) -set(IOS_TOOLCHAIN_HAS_RUN true) - -############################################################################### -# OPTIONS # -############################################################################### - -option(DROP_32_BIT "Drops the 32-bit targets universally." YES) - -############################################################################### -# END OPTIONS # -############################################################################### - -# List of supported platform values -list(APPEND _supported_platforms - "OS" "OS64" "OS64COMBINED" "SIMULATOR" "SIMULATOR64" "SIMULATORARM64" - "TVOS" "TVOSCOMBINED" "SIMULATOR_TVOS" - "WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS" - "MAC" "MAC_ARM64" - "MAC_CATALYST" "MAC_CATALYST_ARM64") - -# Cache what generator is used -set(USED_CMAKE_GENERATOR "${CMAKE_GENERATOR}") - -# Check if using a CMake version capable of building combined FAT builds (simulator and target slices combined in one static lib) -if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.14") - set(MODERN_CMAKE YES) -endif() - -# Get the Xcode version being used. -# Problem: CMake runs toolchain files multiple times, but can't read cache variables on some runs. -# Workaround: On first run (in which cache variables are always accessible), set an intermediary environment variable. -# -# NOTE: This pattern is used i many places in this toolchain to speed up checks of all sorts -if(DEFINED XCODE_VERSION_INT) - # Environment variables are always preserved. - set(ENV{_XCODE_VERSION_INT} "${XCODE_VERSION_INT}") -elseif(DEFINED ENV{_XCODE_VERSION_INT}) - set(XCODE_VERSION_INT "$ENV{_XCODE_VERSION_INT}") -elseif(NOT DEFINED XCODE_VERSION_INT) - find_program(XCODEBUILD_EXECUTABLE xcodebuild) - if(NOT XCODEBUILD_EXECUTABLE) - message(FATAL_ERROR "xcodebuild not found. Please install either the standalone commandline tools or Xcode.") - endif() - execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -version - OUTPUT_VARIABLE XCODE_VERSION_INT - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - string(REGEX MATCH "Xcode [0-9\\.]+" XCODE_VERSION_INT "${XCODE_VERSION_INT}") - string(REGEX REPLACE "Xcode ([0-9\\.]+)" "\\1" XCODE_VERSION_INT "${XCODE_VERSION_INT}") - set(XCODE_VERSION_INT "${XCODE_VERSION_INT}" CACHE INTERNAL "") -endif() - -# Assuming that xcode 12.0 is installed you most probably have ios sdk 14.0 or later installed (tested on Big Sur) -# if you don't set a deployment target it will be set the way you only get 64-bit builds -if(NOT DEFINED DEPLOYMENT_TARGET AND XCODE_VERSION_INT VERSION_GREATER 12.0) - # Temporarily fix the arm64 issues in CMake install-combined by excluding arm64 for simulator builds (needed for Apple Silicon...) - set(CMAKE_XCODE_ATTRIBUTE_EXCLUDED_ARCHS[sdk=iphonesimulator*] "arm64") -endif() - -# Check if the platform variable is set -if(DEFINED PLATFORM) - # Environment variables are always preserved. - set(ENV{_PLATFORM} "${PLATFORM}") -elseif(DEFINED ENV{_PLATFORM}) - set(PLATFORM "$ENV{_PLATFORM}") -elseif(NOT DEFINED PLATFORM) - message(FATAL_ERROR "PLATFORM argument not set. Bailing configure since I don't know what target you want to build for!") -endif () - -# Safeguard that the platform value is set and is one of the supported values -list(FIND _supported_platforms ${PLATFORM} contains_PLATFORM) -if("${contains_PLATFORM}" EQUAL "-1") - string(REPLACE ";" "\n * " _supported_platforms_formatted "${_supported_platforms}") - message(FATAL_ERROR " Invalid PLATFORM specified! Current value: ${PLATFORM}.\n" - " Supported PLATFORM values: \n * ${_supported_platforms_formatted}") -endif() - -# Check if Apple Silicon is supported -if(PLATFORM MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$" AND ${CMAKE_VERSION} VERSION_LESS "3.19.5") - message(FATAL_ERROR "Apple Silicon builds requires a minimum of CMake 3.19.5") -endif() - -# Touch toolchain variable to suppress "unused variable" warning. -# This happens if CMake is invoked with the same command line the second time. -if(CMAKE_TOOLCHAIN_FILE) -endif() - -# Fix for PThread library not in path -set(CMAKE_THREAD_LIBS_INIT "-lpthread") -set(CMAKE_HAVE_THREADS_LIBRARY 1) -set(CMAKE_USE_WIN32_THREADS_INIT 0) -set(CMAKE_USE_PTHREADS_INIT 1) - -# Specify minimum version of deployment target. -if(NOT DEFINED DEPLOYMENT_TARGET) - if (PLATFORM MATCHES "WATCHOS") - # Unless specified, SDK version 4.0 is used by default as minimum target version (watchOS). - set(DEPLOYMENT_TARGET "4.0") - elseif(PLATFORM STREQUAL "MAC") - # Unless specified, SDK version 10.13 (High sierra) is used by default as minimum target version (macos). - set(DEPLOYMENT_TARGET "10.13") - elseif(PLATFORM STREQUAL "MAC_ARM64") - # Unless specified, SDK version 11.0 (Big Sur) is used by default as minimum target version (macos on arm). - set(DEPLOYMENT_TARGET "11.0") - elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64") - # Unless specified, SDK version 13.0 is used by default as minimum target version (mac catalyst minimum requirement). - set(DEPLOYMENT_TARGET "13.0") - else() - # Unless specified, SDK version 11.0 is used by default as minimum target version (iOS, tvOS). - set(DEPLOYMENT_TARGET "11.0") - endif() - message(STATUS "[DEFAULTS] Using the default min-version since DEPLOYMENT_TARGET not provided!") -elseif(DEFINED DEPLOYMENT_TARGET AND PLATFORM STREQUAL "MAC_CATALYST" AND ${DEPLOYMENT_TARGET} VERSION_LESS "13.0") - message(FATAL_ERROR "Mac Catalyst builds requires a minimum deployment target of 13.0!") -endif() - -# Store the DEPLOYMENT_TARGET in the cache -set(DEPLOYMENT_TARGET "${DEPLOYMENT_TARGET}" CACHE INTERNAL "") - -# Handle the case where we are targeting iOS and a version above 10.3.4 (32-bit support dropped officially) -if(PLATFORM STREQUAL "OS" AND DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 10.3.4) - set(PLATFORM "OS64") - message(STATUS "Targeting minimum SDK version ${DEPLOYMENT_TARGET}. Dropping 32-bit support.") -elseif(PLATFORM STREQUAL "SIMULATOR" AND DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 10.3.4) - set(PLATFORM "SIMULATOR64") - message(STATUS "Targeting minimum SDK version ${DEPLOYMENT_TARGET}. Dropping 32-bit support.") -endif() - -set(PLATFORM_INT "${PLATFORM}") - -if(DEFINED ARCHS) - string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") -endif() - -# Determine the platform name and architectures for use in xcodebuild commands -# from the specified PLATFORM_INT name. -if(PLATFORM_INT STREQUAL "OS") - set(SDK_NAME iphoneos) - if(NOT ARCHS) - set(ARCHS armv7 armv7s arm64) - set(APPLE_TARGET_TRIPLE_INT arm-apple-ios) - endif() -elseif(PLATFORM_INT STREQUAL "OS64") - set(SDK_NAME iphoneos) - if(NOT ARCHS) - if (XCODE_VERSION_INT VERSION_GREATER 10.0) - set(ARCHS arm64) # Add arm64e when Apple have fixed the integration issues with it, libarclite_iphoneos.a is currently missung bitcode markers for example - else() - set(ARCHS arm64) - endif() - set(APPLE_TARGET_TRIPLE_INT aarch64-apple-ios) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios) - endif() -elseif(PLATFORM_INT STREQUAL "OS64COMBINED") - set(SDK_NAME iphoneos) - if(MODERN_CMAKE) - if(NOT ARCHS) - if (XCODE_VERSION_INT VERSION_GREATER 10.0) - set(ARCHS arm64 x86_64) # Add arm64e when Apple have fixed the integration issues with it, libarclite_iphoneos.a is currently missung bitcode markers for example - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64") - else() - set(ARCHS arm64 x86_64) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64") - endif() - set(APPLE_TARGET_TRIPLE_INT aarch64-x86_64-apple-ios) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios) - endif() - else() - message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the OS64COMBINED setting work") - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATOR") - set(SDK_NAME iphonesimulator) - if(NOT ARCHS) - set(ARCHS i386) - set(APPLE_TARGET_TRIPLE_INT i386-apple-ios) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios) - endif() - message(DEPRECATION "SIMULATOR IS DEPRECATED. Consider using SIMULATOR64 instead.") -elseif(PLATFORM_INT STREQUAL "SIMULATOR64") - set(SDK_NAME iphonesimulator) - if(NOT ARCHS) - set(ARCHS x86_64) - set(APPLE_TARGET_TRIPLE_INT x86_64-apple-ios) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios) - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATORARM64") - set(SDK_NAME iphonesimulator) - if(NOT ARCHS) - set(ARCHS arm64) - set(APPLE_TARGET_TRIPLE_INT aarch64-apple-ios) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios) - endif() -elseif(PLATFORM_INT STREQUAL "TVOS") - set(SDK_NAME appletvos) - if(NOT ARCHS) - set(ARCHS arm64) - set(APPLE_TARGET_TRIPLE_INT aarch64-apple-tvos) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos) - endif() -elseif (PLATFORM_INT STREQUAL "TVOSCOMBINED") - set(SDK_NAME appletvos) - if(MODERN_CMAKE) - if(NOT ARCHS) - set(ARCHS arm64 x86_64) - set(APPLE_TARGET_TRIPLE_INT aarch64-x86_64-apple-tvos) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=appletvos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=appletvsimulator*] "x86_64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=appletvos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=appletvsimulator*] "x86_64") - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos) - endif() - else() - message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the TVOSCOMBINED setting work") - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATOR_TVOS") - set(SDK_NAME appletvsimulator) - if(NOT ARCHS) - set(ARCHS x86_64) - set(APPLE_TARGET_TRIPLE_INT x86_64-apple-tvos) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos) - endif() -elseif(PLATFORM_INT STREQUAL "WATCHOS") - set(SDK_NAME watchos) - if(NOT ARCHS) - if (XCODE_VERSION_INT VERSION_GREATER 10.0) - set(ARCHS armv7k arm64_32) - set(APPLE_TARGET_TRIPLE_INT aarch64_32-apple-watchos) - else() - set(ARCHS armv7k) - set(APPLE_TARGET_TRIPLE_INT arm-apple-watchos) - endif() - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos) - endif() -elseif(PLATFORM_INT STREQUAL "WATCHOSCOMBINED") - set(SDK_NAME watchos) - if(MODERN_CMAKE) - if(NOT ARCHS) - if (XCODE_VERSION_INT VERSION_GREATER 10.0) - set(ARCHS armv7k arm64_32 i386) - set(APPLE_TARGET_TRIPLE_INT aarch64_32-i386-apple-watchos) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k arm64_32") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k arm64_32") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386") - else() - set(ARCHS armv7k i386) - set(APPLE_TARGET_TRIPLE_INT arm-i386-apple-watchos) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386") - endif() - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos) - endif() - else() - message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the WATCHOSCOMBINED setting work") - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS") - set(SDK_NAME watchsimulator) - if(NOT ARCHS) - set(ARCHS i386) - set(APPLE_TARGET_TRIPLE_INT i386-apple-watchos) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos) - endif() -elseif(PLATFORM_INT STREQUAL "MAC" OR PLATFORM_INT STREQUAL "MAC_CATALYST") - set(SDK_NAME macosx) - if(NOT ARCHS) - set(ARCHS x86_64) - endif() - string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") - if(PLATFORM_INT STREQUAL "MAC") - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx) - elseif(PLATFORM_INT STREQUAL "MAC_CATALYST") - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi) - endif() -elseif(PLATFORM_INT MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$") - set(SDK_NAME macosx) - if(NOT ARCHS) - set(ARCHS arm64) - endif() - string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") - if(PLATFORM_INT STREQUAL "MAC_ARM64") - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx) - elseif(PLATFORM_INT STREQUAL "MAC_CATALYST_ARM64") - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi) - endif() -else() - message(FATAL_ERROR "Invalid PLATFORM: ${PLATFORM_INT}") -endif() - -if(MODERN_CMAKE AND PLATFORM_INT MATCHES ".*COMBINED" AND NOT CMAKE_GENERATOR MATCHES "Xcode") - message(FATAL_ERROR "The COMBINED options only work with Xcode generator, -G Xcode") -endif() - -if(CMAKE_GENERATOR MATCHES "Xcode" AND PLATFORM_INT MATCHES "MAC_CATALYST_.*") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") - set(CMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS "macosx") - set(CMAKE_XCODE_EFFECTIVE_PLATFORMS "-maccatalyst") - if(NOT DEFINED MACOSX_DEPLOYMENT_TARGET) - set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "10.15") - else() - set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "${MACOSX_DEPLOYMENT_TARGET}") - endif() -elseif(CMAKE_GENERATOR MATCHES "Xcode") - set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${DEPLOYMENT_TARGET}") - if(NOT PLATFORM_INT MATCHES ".*COMBINED") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=${SDK_NAME}*] "${ARCHS}") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=${SDK_NAME}*] "${ARCHS}") - endif() -endif() - -# If user did not specify the SDK root to use, then query xcodebuild for it. -if(DEFINED CMAKE_OSX_SYSROOT_INT) - # Environment variables are always preserved. - set(ENV{_CMAKE_OSX_SYSROOT_INT} "${CMAKE_OSX_SYSROOT_INT}") -elseif(DEFINED ENV{_CMAKE_OSX_SYSROOT_INT}) - set(CMAKE_OSX_SYSROOT_INT "$ENV{_CMAKE_OSX_SYSROOT_INT}") -elseif(NOT DEFINED CMAKE_OSX_SYSROOT_INT) - execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -version -sdk ${SDK_NAME} Path - OUTPUT_VARIABLE CMAKE_OSX_SYSROOT_INT - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -endif() - -if (NOT DEFINED CMAKE_OSX_SYSROOT_INT AND NOT DEFINED CMAKE_OSX_SYSROOT) - message(SEND_ERROR "Please make sure that Xcode is installed and that the toolchain" - "is pointing to the correct path. Please run:" - "sudo xcode-select -s /Applications/Xcode.app/Contents/Developer" - "and see if that fixes the problem for you.") - message(FATAL_ERROR "Invalid CMAKE_OSX_SYSROOT: ${CMAKE_OSX_SYSROOT} " - "does not exist.") -elseif(DEFINED CMAKE_OSX_SYSROOT_INT) - set(CMAKE_OSX_SYSROOT_INT "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "") - # Specify the location or name of the platform SDK to be used in CMAKE_OSX_SYSROOT. - set(CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "") -endif() - -# Use bitcode or not -if(NOT DEFINED ENABLE_BITCODE AND NOT ARCHS MATCHES "((^|;|, )(i386|x86_64))+") - # Unless specified, enable bitcode support by default - message(STATUS "[DEFAULTS] Enabling bitcode support by default. ENABLE_BITCODE not provided!") - set(ENABLE_BITCODE TRUE) -elseif(NOT DEFINED ENABLE_BITCODE) - message(STATUS "[DEFAULTS] Disabling bitcode support by default on simulators. ENABLE_BITCODE not provided for override!") - set(ENABLE_BITCODE FALSE) -endif() -set(ENABLE_BITCODE_INT ${ENABLE_BITCODE} CACHE BOOL - "Whether or not to enable bitcode" FORCE) -# Use ARC or not -if(NOT DEFINED ENABLE_ARC) - # Unless specified, enable ARC support by default - set(ENABLE_ARC TRUE) - message(STATUS "[DEFAULTS] Enabling ARC support by default. ENABLE_ARC not provided!") -endif() -set(ENABLE_ARC_INT ${ENABLE_ARC} CACHE BOOL "Whether or not to enable ARC" FORCE) -# Use hidden visibility or not -if(NOT DEFINED ENABLE_VISIBILITY) - # Unless specified, disable symbols visibility by default - set(ENABLE_VISIBILITY FALSE) - message(STATUS "[DEFAULTS] Hiding symbols visibility by default. ENABLE_VISIBILITY not provided!") -endif() -set(ENABLE_VISIBILITY_INT ${ENABLE_VISIBILITY} CACHE BOOL "Whether or not to hide symbols from the dynamic linker (-fvisibility=hidden)" FORCE) -# Set strict compiler checks or not -if(NOT DEFINED ENABLE_STRICT_TRY_COMPILE) - # Unless specified, disable strict try_compile() - set(ENABLE_STRICT_TRY_COMPILE FALSE) - message(STATUS "[DEFAULTS] Using NON-strict compiler checks by default. ENABLE_STRICT_TRY_COMPILE not provided!") -endif() -set(ENABLE_STRICT_TRY_COMPILE_INT ${ENABLE_STRICT_TRY_COMPILE} CACHE BOOL - "Whether or not to use strict compiler checks" FORCE) - -# Get the SDK version information. -if(DEFINED SDK_VERSION) - # Environment variables are always preserved. - set(ENV{_SDK_VERSION} "${SDK_VERSION}") -elseif(DEFINED ENV{_SDK_VERSION}) - set(SDK_VERSION "$ENV{_SDK_VERSION}") -elseif(NOT DEFINED SDK_VERSION) - execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -sdk ${CMAKE_OSX_SYSROOT_INT} -version SDKVersion - OUTPUT_VARIABLE SDK_VERSION - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -endif() - -# Find the Developer root for the specific iOS platform being compiled for -# from CMAKE_OSX_SYSROOT. Should be ../../ from SDK specified in -# CMAKE_OSX_SYSROOT. There does not appear to be a direct way to obtain -# this information from xcrun or xcodebuild. -if (NOT DEFINED CMAKE_DEVELOPER_ROOT AND NOT CMAKE_GENERATOR MATCHES "Xcode") - get_filename_component(PLATFORM_SDK_DIR ${CMAKE_OSX_SYSROOT_INT} PATH) - get_filename_component(CMAKE_DEVELOPER_ROOT ${PLATFORM_SDK_DIR} PATH) - if (NOT EXISTS "${CMAKE_DEVELOPER_ROOT}") - message(FATAL_ERROR "Invalid CMAKE_DEVELOPER_ROOT: ${CMAKE_DEVELOPER_ROOT} does not exist.") - endif() -endif() - -# Find the C & C++ compilers for the specified SDK. -if(DEFINED CMAKE_C_COMPILER) - # Environment variables are always preserved. - set(ENV{_CMAKE_C_COMPILER} "${CMAKE_C_COMPILER}") -elseif(DEFINED ENV{_CMAKE_C_COMPILER}) - set(CMAKE_C_COMPILER "$ENV{_CMAKE_C_COMPILER}") -elseif(NOT DEFINED CMAKE_C_COMPILER) - execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find clang - OUTPUT_VARIABLE CMAKE_C_COMPILER - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -endif() -if(DEFINED CMAKE_CXX_COMPILER) - # Environment variables are always preserved. - set(ENV{_CMAKE_CXX_COMPILER} "${CMAKE_CXX_COMPILER}") -elseif(DEFINED ENV{_CMAKE_CXX_COMPILER}) - set(CMAKE_CXX_COMPILER "$ENV{_CMAKE_CXX_COMPILER}") -elseif(NOT DEFINED CMAKE_CXX_COMPILER) - execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find clang++ - OUTPUT_VARIABLE CMAKE_CXX_COMPILER - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -endif() -# Find (Apple's) libtool. -if(DEFINED BUILD_LIBTOOL) - # Environment variables are always preserved. - set(ENV{_BUILD_LIBTOOL} "${BUILD_LIBTOOL}") -elseif(DEFINED ENV{_BUILD_LIBTOOL}) - set(BUILD_LIBTOOL "$ENV{_BUILD_LIBTOOL}") -elseif(NOT DEFINED BUILD_LIBTOOL) - execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find libtool - OUTPUT_VARIABLE BUILD_LIBTOOL - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -endif() -# Find the toolchain's provided install_name_tool if none is found on the host -if(DEFINED CMAKE_INSTALL_NAME_TOOL) - # Environment variables are always preserved. - set(ENV{_CMAKE_INSTALL_NAME_TOOL} "${CMAKE_INSTALL_NAME_TOOL}") -elseif(DEFINED ENV{_CMAKE_INSTALL_NAME_TOOL}) - set(CMAKE_INSTALL_NAME_TOOL "$ENV{_CMAKE_INSTALL_NAME_TOOL}") -elseif(NOT DEFINED CMAKE_INSTALL_NAME_TOOL) - execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find install_name_tool - OUTPUT_VARIABLE CMAKE_INSTALL_NAME_TOOL_INT - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - set(CMAKE_INSTALL_NAME_TOOL ${CMAKE_INSTALL_NAME_TOOL_INT} CACHE INTERNAL "") -endif() - -# Configure libtool to be used instead of ar + ranlib to build static libraries. -# This is required on Xcode 7+, but should also work on previous versions of -# Xcode. -get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES) -foreach(lang ${languages}) - set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "${BUILD_LIBTOOL} -static -o " CACHE INTERNAL "") -endforeach() - -# CMake 3.14+ support building for iOS, watchOS and tvOS out of the box. -if(MODERN_CMAKE) - if(SDK_NAME MATCHES "iphone") - set(CMAKE_SYSTEM_NAME iOS) - elseif(SDK_NAME MATCHES "macosx") - set(CMAKE_SYSTEM_NAME Darwin) - elseif(SDK_NAME MATCHES "appletv") - set(CMAKE_SYSTEM_NAME tvOS) - elseif(SDK_NAME MATCHES "watch") - set(CMAKE_SYSTEM_NAME watchOS) - endif() - # Provide flags for a combined FAT library build on newer CMake versions - if(PLATFORM_INT MATCHES ".*COMBINED") - set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH "NO") - set(CMAKE_IOS_INSTALL_COMBINED YES) - message(STATUS "Will combine built (static) artifacts into FAT lib...") - endif() -elseif(NOT DEFINED CMAKE_SYSTEM_NAME AND ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.10") - # Legacy code path prior to CMake 3.14 or fallback if no CMAKE_SYSTEM_NAME specified - set(CMAKE_SYSTEM_NAME iOS) -elseif(NOT DEFINED CMAKE_SYSTEM_NAME) - # Legacy code path prior to CMake 3.14 or fallback if no CMAKE_SYSTEM_NAME specified - set(CMAKE_SYSTEM_NAME Darwin) -endif() -# Standard settings. -set(CMAKE_SYSTEM_VERSION ${SDK_VERSION} CACHE INTERNAL "") -set(UNIX TRUE CACHE BOOL "") -set(APPLE TRUE CACHE BOOL "") -if(PLATFORM STREQUAL "MAC" OR PLATFORM STREQUAL "MAC_ARM64") - set(IOS FALSE CACHE BOOL "") - set(MACOS TRUE CACHE BOOL "") -elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64") - set(IOS TRUE CACHE BOOL "") - set(MACOS TRUE CACHE BOOL "") -else() - set(IOS TRUE CACHE BOOL "") -endif() -set(CMAKE_AR ar CACHE FILEPATH "" FORCE) -set(CMAKE_RANLIB ranlib CACHE FILEPATH "" FORCE) -set(CMAKE_STRIP strip CACHE FILEPATH "" FORCE) -# Set the architectures for which to build. -set(CMAKE_OSX_ARCHITECTURES ${ARCHS} CACHE INTERNAL "") -# Change the type of target generated for try_compile() so it'll work when cross-compiling, weak compiler checks -if(NOT ENABLE_STRICT_TRY_COMPILE_INT) - set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) -endif() -# All iOS/Darwin specific settings - some may be redundant. -set(CMAKE_MACOSX_BUNDLE YES) -set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") -set(CMAKE_SHARED_LIBRARY_PREFIX "lib") -set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib") -set(CMAKE_SHARED_MODULE_PREFIX "lib") -set(CMAKE_SHARED_MODULE_SUFFIX ".so") -set(CMAKE_C_COMPILER_ABI ELF) -set(CMAKE_CXX_COMPILER_ABI ELF) -set(CMAKE_C_HAS_ISYSROOT 1) -set(CMAKE_CXX_HAS_ISYSROOT 1) -set(CMAKE_MODULE_EXISTS 1) -set(CMAKE_DL_LIBS "") -set(CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ") -set(CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ") -set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}") -set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}") - -if(ARCHS MATCHES "((^|;|, )(arm64|arm64e|x86_64))+") - set(CMAKE_C_SIZEOF_DATA_PTR 8) - set(CMAKE_CXX_SIZEOF_DATA_PTR 8) - if(ARCHS MATCHES "((^|;|, )(arm64|arm64e))+") - set(CMAKE_SYSTEM_PROCESSOR "aarch64") - else() - set(CMAKE_SYSTEM_PROCESSOR "x86_64") - endif() -else() - set(CMAKE_C_SIZEOF_DATA_PTR 4) - set(CMAKE_CXX_SIZEOF_DATA_PTR 4) - set(CMAKE_SYSTEM_PROCESSOR "arm") -endif() - -# Note that only Xcode 7+ supports the newer more specific: -# -m${SDK_NAME}-version-min flags, older versions of Xcode use: -# -m(ios/ios-simulator)-version-min instead. -if(${CMAKE_VERSION} VERSION_LESS "3.11") - if(PLATFORM_INT STREQUAL "OS" OR PLATFORM_INT STREQUAL "OS64") - if(XCODE_VERSION_INT VERSION_LESS 7.0) - set(SDK_NAME_VERSION_FLAGS - "-mios-version-min=${DEPLOYMENT_TARGET}") - else() - # Xcode 7.0+ uses flags we can build directly from SDK_NAME. - set(SDK_NAME_VERSION_FLAGS - "-m${SDK_NAME}-version-min=${DEPLOYMENT_TARGET}") - endif() - elseif(PLATFORM_INT STREQUAL "TVOS") - set(SDK_NAME_VERSION_FLAGS - "-mtvos-version-min=${DEPLOYMENT_TARGET}") - elseif(PLATFORM_INT STREQUAL "SIMULATOR_TVOS") - set(SDK_NAME_VERSION_FLAGS - "-mtvos-simulator-version-min=${DEPLOYMENT_TARGET}") - elseif(PLATFORM_INT STREQUAL "WATCHOS") - set(SDK_NAME_VERSION_FLAGS - "-mwatchos-version-min=${DEPLOYMENT_TARGET}") - elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS") - set(SDK_NAME_VERSION_FLAGS - "-mwatchos-simulator-version-min=${DEPLOYMENT_TARGET}") - elseif(PLATFORM_INT STREQUAL "MAC") - set(SDK_NAME_VERSION_FLAGS - "-mmacosx-version-min=${DEPLOYMENT_TARGET}") - else() - # SIMULATOR or SIMULATOR64 both use -mios-simulator-version-min. - set(SDK_NAME_VERSION_FLAGS - "-mios-simulator-version-min=${DEPLOYMENT_TARGET}") - endif() -elseif(NOT PLATFORM_INT STREQUAL "MAC_CATALYST") - # Newer versions of CMake sets the version min flags correctly, skip this for Mac Catalyst targets - set(CMAKE_OSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET}) -endif() - -if(DEFINED APPLE_TARGET_TRIPLE_INT) - set(APPLE_TARGET_TRIPLE ${APPLE_TARGET_TRIPLE_INT} CACHE INTERNAL "") -endif() - -if(PLATFORM_INT STREQUAL "MAC_CATALYST") - set(C_TARGET_FLAGS "-target ${APPLE_TARGET_TRIPLE_INT} -isystem ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/usr/include") -endif() - -if(ENABLE_BITCODE_INT) - set(BITCODE "-fembed-bitcode") - set(CMAKE_XCODE_ATTRIBUTE_BITCODE_GENERATION_MODE "bitcode") - set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "YES") -else() - set(BITCODE "") - set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO") -endif() - -if(ENABLE_ARC_INT) - set(FOBJC_ARC "-fobjc-arc") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "YES") -else() - set(FOBJC_ARC "-fno-objc-arc") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "NO") -endif() - -if(NOT ENABLE_VISIBILITY_INT) - foreach(lang ${languages}) - set(CMAKE_${lang}_VISIBILITY_PRESET "hidden" CACHE INTERNAL "") - endforeach() - set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "YES") - set(VISIBILITY "-fvisibility=hidden -fvisibility-inlines-hidden") -else() - foreach(lang ${languages}) - set(CMAKE_${lang}_VISIBILITY_PRESET "default" CACHE INTERNAL "") - endforeach() - set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "NO") - set(VISIBILITY "-fvisibility=default") -endif() - -#Check if Xcode generator is used, since that will handle these flags automagically -if(CMAKE_GENERATOR MATCHES "Xcode") - message(STATUS "Not setting any manual command-line buildflags, since Xcode is selected as generator.") -else() - # Hidden visibility is required for C++ on iOS. - set(CMAKE_C_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} ${BITCODE} -fobjc-abi-version=2 ${FOBJC_ARC} ${CMAKE_C_FLAGS}") - set(CMAKE_CXX_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} -fobjc-abi-version=2 ${FOBJC_ARC} ${CMAKE_CXX_FLAGS}") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -O0 -g ${CMAKE_CXX_FLAGS_DEBUG}") - set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS} -DNDEBUG -Os -ffast-math ${CMAKE_CXX_FLAGS_MINSIZEREL}") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS} -DNDEBUG -O2 -g -ffast-math ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -DNDEBUG -O3 -ffast-math ${CMAKE_CXX_FLAGS_RELEASE}") - set(CMAKE_C_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}") - set(CMAKE_CXX_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}") - set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp -arch ${CMAKE_OSX_ARCHITECTURES}") -endif() - -## Print status messages to inform of the current state -message(STATUS "Configuring ${SDK_NAME} build for platform: ${PLATFORM_INT}, architecture(s): ${ARCHS}") -message(STATUS "Using SDK: ${CMAKE_OSX_SYSROOT_INT}") -message(STATUS "Using C compiler: ${CMAKE_C_COMPILER}") -message(STATUS "Using CXX compiler: ${CMAKE_CXX_COMPILER}") -message(STATUS "Using libtool: ${BUILD_LIBTOOL}") -message(STATUS "Using install name tool: ${CMAKE_INSTALL_NAME_TOOL}") -if(DEFINED APPLE_TARGET_TRIPLE) - message(STATUS "Autoconf target triple: ${APPLE_TARGET_TRIPLE}") -endif() -message(STATUS "Using minimum deployment version: ${DEPLOYMENT_TARGET}" - " (SDK version: ${SDK_VERSION})") -if(MODERN_CMAKE) - message(STATUS "Merging integrated CMake 3.14+ iOS,tvOS,watchOS,macOS toolchain(s) with this toolchain!") -endif() -if(CMAKE_GENERATOR MATCHES "Xcode") - message(STATUS "Using Xcode version: ${XCODE_VERSION_INT}") -endif() -message(STATUS "CMake version: ${CMAKE_VERSION}") -if(DEFINED SDK_NAME_VERSION_FLAGS) - message(STATUS "Using version flags: ${SDK_NAME_VERSION_FLAGS}") -endif() -message(STATUS "Using a data_ptr size of: ${CMAKE_CXX_SIZEOF_DATA_PTR}") -if(ENABLE_BITCODE_INT) - message(STATUS "Bitcode: Enabled") -else() - message(STATUS "Bitcode: Disabled") -endif() - -if(ENABLE_ARC_INT) - message(STATUS "ARC: Enabled") -else() - message(STATUS "ARC: Disabled") -endif() - -if(ENABLE_VISIBILITY_INT) - message(STATUS "Hiding symbols: Disabled") -else() - message(STATUS "Hiding symbols: Enabled") -endif() - -# Set global properties -set_property(GLOBAL PROPERTY PLATFORM "${PLATFORM}") -set_property(GLOBAL PROPERTY APPLE_TARGET_TRIPLE "${APPLE_TARGET_TRIPLE_INT}") -set_property(GLOBAL PROPERTY SDK_VERSION "${SDK_VERSION}") -set_property(GLOBAL PROPERTY XCODE_VERSION "${XCODE_VERSION_INT}") -set_property(GLOBAL PROPERTY OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") - -# Export configurable variables for the try_compile() command. -set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES - PLATFORM - XCODE_VERSION_INT - SDK_VERSION - DEPLOYMENT_TARGET - CMAKE_DEVELOPER_ROOT - CMAKE_OSX_SYSROOT_INT - ENABLE_BITCODE - ENABLE_ARC - CMAKE_C_COMPILER - CMAKE_CXX_COMPILER - BUILD_LIBTOOL - CMAKE_INSTALL_NAME_TOOL - CMAKE_C_FLAGS - CMAKE_CXX_FLAGS - CMAKE_CXX_FLAGS_DEBUG - CMAKE_CXX_FLAGS_MINSIZEREL - CMAKE_CXX_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS_RELEASE - CMAKE_C_LINK_FLAGS - CMAKE_CXX_LINK_FLAGS - CMAKE_ASM_FLAGS - ) - -set(CMAKE_PLATFORM_HAS_INSTALLNAME 1) -set(CMAKE_SHARED_LINKER_FLAGS "-rpath @executable_path/Frameworks -rpath @loader_path/Frameworks") -set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib -Wl,-headerpad_max_install_names") -set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle -Wl,-headerpad_max_install_names") -set(CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader,") -set(CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader,") -set(CMAKE_FIND_LIBRARY_SUFFIXES ".tbd" ".dylib" ".so" ".a") -set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-install_name") - -# Set the find root to the SDK developer roots. -# Note: CMAKE_FIND_ROOT_PATH is only useful when cross-compiling. Thus, do not set on macOS builds. -if(NOT PLATFORM_INT STREQUAL "MAC" AND NOT PLATFORM_INT STREQUAL "MAC_ARM64") - list(APPEND CMAKE_FIND_ROOT_PATH "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "") - set(CMAKE_IGNORE_PATH "/System/Library/Frameworks;/usr/local/lib" CACHE INTERNAL "") -endif() - -# Default to searching for frameworks first. -set(CMAKE_FIND_FRAMEWORK FIRST) - -# Set up the default search directories for frameworks. -if(PLATFORM_INT MATCHES "MAC_CATALYST.*") - set(CMAKE_FRAMEWORK_PATH - ${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks - ${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks - ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/System/Library/Frameworks - ${CMAKE_FRAMEWORK_PATH} CACHE INTERNAL "") -else() - set(CMAKE_FRAMEWORK_PATH - ${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks - ${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks - ${CMAKE_FRAMEWORK_PATH} CACHE INTERNAL "") -endif() - -# By default, search both the specified iOS SDK and the remainder of the host filesystem. -if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH CACHE INTERNAL "") -endif() -if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH CACHE INTERNAL "") -endif() -if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH CACHE INTERNAL "") -endif() -if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH CACHE INTERNAL "") -endif() - -# -# Some helper-macros below to simplify and beautify the CMakeFile -# - -# This little macro lets you set any Xcode specific property. -macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE XCODE_RELVERSION) - set(XCODE_RELVERSION_I "${XCODE_RELVERSION}") - if(XCODE_RELVERSION_I STREQUAL "All") - set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} "${XCODE_VALUE}") - else() - set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY}[variant=${XCODE_RELVERSION_I}] "${XCODE_VALUE}") - endif() -endmacro(set_xcode_property) - -# This macro lets you find executable programs on the host system. -macro(find_host_package) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE NEVER) - set(_TOOLCHAIN_IOS ${IOS}) - set(IOS FALSE) - find_package(${ARGN}) - set(IOS ${_TOOLCHAIN_IOS}) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH) -endmacro(find_host_package) diff --git a/platform/ios/platform/macos/CHANGELOG.md b/platform/ios/platform/macos/CHANGELOG.md deleted file mode 100644 index 6c0f6374c..000000000 --- a/platform/ios/platform/macos/CHANGELOG.md +++ /dev/null @@ -1,680 +0,0 @@ -# Changelog for Mapbox Maps SDK for macOS - -MapLibre welcomes participation and contributions from everyone. Please read [`Contributing Guide`](https://github.com/maplibre/maplibre-native/blob/main/CONTRIBUTING.md) to get started. - -## 0.19.1 - September 06, 2021 - -### Bug Fixes - -* Invalid tile url template for MapLibre style [#107](https://github.com/maplibre/maplibre-native/pull/107) -* Adjust local glyphs [#122](https://github.com/maplibre/maplibre-native/pull/122) -* Return correct Mapbox TileServerOptions [#132](https://github.com/maplibre/maplibre-native/pull/132) - -### Other - -* Fix perf regression in cached tiles of tile pyramid [#129](https://github.com/maplibre/maplibre-native/pull/129) -* Upgrade to newest protozero [#148](https://github.com/maplibre/maplibre-native/pull/148) -* Fix build for Xcode 12.5 & 13-beta. [#153](https://github.com/maplibre/maplibre-native/pull/153) - -## 0.19.0 - June 29, 2021 - -### Features - -* Replacing hardcoded configuration with configurable API and removing Mapbox assets and dependencies [#90](https://github.com/maplibre/maplibre-native/pull/90) - -## 0.18.0 - March 12, 2021 - -### Features - -* Added open geo url support to the macos app. - -### Other - -* mapbox-gl-js submodule has been replaced with maplibre-gl-js -* Removed Mapbox Mobile Events and Telemetry [#7](https://github.com/maplibre/maplibre-native/pull/7) - -## 0.17.0 - January 6, 2021 - -### Features - -* Added the mbtiles file source for rendering vector tiles from file stored locally on the device. - -## 0.16.0 - -### Styles and rendering - -* Added the `mgl_distanceFrom:` expression function for calculating the shortest distance between the evaluated feature and an `MLNPointAnnotation`, `MLNPointCollection`, `MLNPolyline`, `MLNMultiPolyline`, `MLNPolygon`, or `MLNMultiPolygon` that you specify as part of an `NSExpression` format string. ([#295](https://github.com/mapbox/mapbox-gl-native-ios/pull/295)) -* Added the `MLNCircleStyleLayer.circleSortKey` property. ([mapbox/mapbox-gl-native#15875](https://github.com/mapbox/mapbox-gl-native/pull/15875)) -* Chinese, Japanese, and Korean characters are now set in the font specified in style JSON or by the `MLNSymbolLayer.textFontNames` property. If the named font is not installed on the device or bundled with the application, the characters are set in a fallback font listed in the `MLNIdeographicFontFamilyName` key in the Info.plist file. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) -* The `MLNIdeographicFontFamilyName` key in the Info.plist file can now specify the fallback fonts for CJK characters by their PostScript names or display names in addition to font family names. For example, you can specify `NotoSansCJKjp-Bold` or `Noto Sans CJK JP Bold`, which ensures that the characters are set in bold. You can alternatively specify these font names in the `MLNIdeographicFontFamilyName` key of `NSUserDefaults.standardUserDefaults`. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) -* CJK characters are now laid out according to the font, so fonts with nonsquare glyphs have the correct kerning. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) -* Fixed an issue where the baseline for CJK characters was too low compared to non-CJK characters. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) -* Fixed a crash when calling the `-[MLNStyle removeImageForName:]` method with the name of a nonexistent image. ([mapbox/mapbox-gl-native#16391](https://github.com/mapbox/mapbox-gl-native/pull/16391)) -* Fixed an issue where properties such as `MLNFillStyleLayer.fillColor` and `MLNLineStyleLayer.lineColor` misinterpreted non-opaque `NSColor`s. ([#266](https://github.com/mapbox/mapbox-gl-native-ios/pull/266)) - -### Offline maps - -* Added the `-[MLNOfflinePack setContext:completionHandler:]` method for replacing the data associated with an offline pack, such as a name. ([#288](https://github.com/mapbox/mapbox-gl-native-ios/pull/288)) -* Added the `MLNOfflineStorage.databasePath` and `MLNOfflineStorage.databaseURL` properties to obtain the path of the database that contains offline packs and the ambient cache. To customize this path, set the `MLNOfflineStorageDatabasePath` in Info.plist. ([#298](https://github.com/mapbox/mapbox-gl-native-ios/pull/298)) -* Fixed an error that occurred if your implementation of the `-[MLNOfflineStorageDelegate offlineStorage:URLForResourceOfKind:]` method returned a local file URL. ([mapbox/mapbox-gl-native#16428](https://github.com/mapbox/mapbox-gl-native/pull/16428)) - -### Other changes - -* Fixed a crash when encountering an invalid polyline. ([mapbox/mapbox-gl-native#16409](https://github.com/mapbox/mapbox-gl-native/pull/16409)) -* Fixed an issue where an `MLNMapSnapshotOptions` with an invalid `MLNMapCamera.centerCoordinate`, negative `MLNMapCamera.heading`, negative `MLNMapCamera.pitch`, and negative `MLNMapSnapshotOptions.zoomLevel` resulted in a snapshot centered on Null Island at zoom level 0 even if the style specified a different initial center coordinate or zoom level. ([#280](https://github.com/mapbox/mapbox-gl-native-ios/pull/280)) -* Certain logging statements no longer run on the main thread. ([mapbox/mapbox-gl-native#16325](https://github.com/mapbox/mapbox-gl-native/pull/16325)) - -## 0.15.1 - -* Fixed various crashes, including crashes on launch, on macOS 10.11.0 through 10.14._x_. ([mapbox/mapbox-gl-native#16412](https://github.com/mapbox/mapbox-gl-native/pull/16412)) - -## 0.15.0 - -### Styles and rendering - -* Added the `-[MLNMapViewDelegate mapView:shouldRemoveStyleImage:]` method for optimizing style image caching. ([#14769](https://github.com/mapbox/mapbox-gl-native/pull/14769)) -* Added the `image` expression function for converting an image name into a style image. Use this function in expressions in style JSON or with the `MLN_FUNCTION()` syntax in an `NSExpression` format string. Image expressions are compatible with the `mgl_attributed:` expression function and `MLNAttributedExpression` classes for embedding icons inline in text labels. ([#15877](https://github.com/mapbox/mapbox-gl-native/pull/15877), [#15937](https://github.com/mapbox/mapbox-gl-native/pull/15937)) -* The `IN` and `CONTAINS` predicate operators can now test whether a string is a substring of another string or whether the evaluated feature (`SELF`) lies within a given `MLNShape` or `MLNFeature`. ([#183](https://github.com/mapbox/mapbox-gl-native-ios/pull/183), [#184](https://github.com/mapbox/mapbox-gl-native-ios/pull/184)) -* Added the `MLNSymbolStyleLayer.textWritingModes` layout property. This property can be set to `MLNTextWritingModeHorizontal` or `MLNTextWritingModeVertical`. ([#14932](https://github.com/mapbox/mapbox-gl-native/pull/14932)) -* Added the `MLNLineStyleLayer.lineSortKey` and `MLNFillStyleLayer.fillSortKey` properties. ([#179](https://github.com/mapbox/mapbox-gl-native-ios/pull/179)) -* The `MLNSymbolStyleLayer.iconTextFit` property now respects the cap insets of any nine-part stretchable image passed into the `-[MLNStyle setImage:forName:]` method. You can define the stretchable area in Xcode’s asset catalog or by setting the `NSImage.capInsets` property. ([#182](https://github.com/mapbox/mapbox-gl-native-ios/pull/182)) -* Fixed crashes triggered when `MLNSource` and `MLNStyleLayer` objects are accessed after having been invalidated after a style change. ([#15539](https://github.com/mapbox/mapbox-gl-native/pull/15539)) -* Fixed an issue where fill extrusion layers would be incorrectly rendered above other layers. ([#15065](https://github.com/mapbox/mapbox-gl-native/pull/15065)) -* Fixed rendering and collision detection issues with using `MLNSymbolStyleLayer.textVariableAnchor` and `MLNSymbolStyleLayer.iconTextFit` properties on the same layer. ([#15367](https://github.com/mapbox/mapbox-gl-native/pull/15367)) -* Fixed symbol overlap when zooming out quickly. ([#15416](https://github.com/mapbox/mapbox-gl-native/pull/15416)) -* Fixed an issue where non-template images would draw as template images when used in the same style layer. ([#15456](https://github.com/mapbox/mapbox-gl-native/pull/15456)) -* Fixed an issue where the collision boxes for symbols would not be updated when `MLNSymbolStyleLayer.textTranslation` or `MLNSymbolStyleLayer.iconTranslation` were used. ([#15467](https://github.com/mapbox/mapbox-gl-native/pull/15467)) -* Fixed an issue that caused `MLNTileSourceOptionMaximumZoomLevel` to be ignored when setting `MLNTileSource.configurationURL`. ([#15581](https://github.com/mapbox/mapbox-gl-native/pull/15581)) -* Fixed an issue where `MLNSymbolStyleLayer.symbolSortKey` could sort text and icons incorrectly. ([#16023](https://github.com/mapbox/mapbox-gl-native/pull/16023)) -* Fixed an issue where style layers backed by a shape source could flicker when transitioning between styles. ([#15907](https://github.com/mapbox/mapbox-gl-native/pull/15907), [#15941](https://github.com/mapbox/mapbox-gl-native/pull/15941)) -* Improved the performance of loading a style that has many style images. ([#16187](https://github.com/mapbox/mapbox-gl-native/pull/16187)) -* Updated “map ID” to the more accurate term “tileset ID” in documentation; updated “style's Map ID” to the more accurate term “style URL”. ([#15116](https://github.com/mapbox/mapbox-gl-native/pull/15116)) - -### Camera - -* Setting `MLNMapView.contentInset` now moves the map’s focal point to the center of the content frame after insetting. ([#14664](https://github.com/mapbox/mapbox-gl-native/pull/14664)) -* The `-[MLNMapView setCamera:withDuration:animationTimingFunction:edgePadding:completionHandler:]` method now adds the current value of the `MLNMapView.contentInsets` property to the `edgePadding` parameter. ([#14813](https://github.com/mapbox/mapbox-gl-native/pull/14813)) -* Added variants of multiple animated `MLNMapView` methods that accept completion handlers ([#14381](https://github.com/mapbox/mapbox-gl-native/pull/14381)): - * `-[MLNMapView setVisibleCoordinateBounds:edgePadding:animated:completionHandler:]` - * `-[MLNMapView setContentInsets:animated:completionHandler:]` - * `-[MLNMapView showAnnotations:edgePadding:animated:completionHandler:]` -* Added the `MLNMapView.minimumPitch` and `MLNMapView.maximumPitch` properties to further limit how much the user or your code can tilt the map. ([#208](https://github.com/mapbox/mapbox-gl-native-ios/pull/208)) -* Fixed an issue where it was possible to set the map’s content insets then tilt the map enough to see the horizon, causing performance issues. ([#15195](https://github.com/mapbox/mapbox-gl-native/pull/15195)) -* Fixed an issue where animated camera transitions zoomed in or out too dramatically. ([#15281](https://github.com/mapbox/mapbox-gl-native/pull/15281)) -* Improved performance when continuously animating a tilted map. ([#16287](https://github.com/mapbox/mapbox-gl-native/pull/16287)) - -### Feature querying - -* Fixed an issue where `-[MLNMapView visibleFeaturesInRect:]` and `-[MLNShapeSource featuresMatchingPredicate:]` omitted some features from the return value. ([#14884](https://github.com/mapbox/mapbox-gl-native/pull/14884)) -* Fixed an issue where `-[MLNMapView visibleFeaturesInRect:]` and `-[MLNShapeSource featuresMatchingPredicate:]` could return incorrect coordinates at zoom levels 20 and higher. ([#15560](https://github.com/mapbox/mapbox-gl-native/pull/15560)) -* Improved feature querying performance. ([#14930](https://github.com/mapbox/mapbox-gl-native/pull/14930)) - -### Snapshots - -* Added an `-[MLNMapSnapshotter startWithOverlayHandler:completionHandler:]` method to provide the snapshot's current `CGContext` in order to perform custom drawing on `MLNMapSnapshot` objects. ([#15530](https://github.com/mapbox/mapbox-gl-native/pull/15530)) -* Added the `MLNMapSnapshotter.delegate` property and `MLNMapSnapshotterDelegate` protocol for customizing the style before taking a snapshot. ([#235](https://github.com/mapbox/mapbox-gl-native-ios/pull/235)) -* You no longer need to explicitly capture the `MLNMapSnapshotter` object in the completion handler that you specify in `-[MLNMapSnapshotter startWithCompletionHandler:]`. Even if you declare the snapshotter locally without holding a strong reference to it, the snapshotter is only deallocated after the completion handler finishes, and the completion handler generally receives a valid snapshot. ([#210](https://github.com/mapbox/mapbox-gl-native-ios/pull/210)) -* The `-[MLNMapSnapshotter cancel]` method no longer calls the completion handler passed into `-[MLNMapSnapshotter startWithCompletionHandler:]`. ([#210](https://github.com/mapbox/mapbox-gl-native-ios/pull/210)) -* Fixed an issue where the `MLNMapSnapshotter.loading` property always returned `NO`, even while loading a snapshot. ([#210](https://github.com/mapbox/mapbox-gl-native-ios/pull/210)) - -### Networking and storage - -* Ideographic glyphs from Chinese, Japanese, and Korean are no longer downloaded by default as part of offline packs; they are instead rendered on-device, saving bandwidth and storage while improving performance. ([#14176](https://github.com/mapbox/mapbox-gl-native/pull/14176)) -* Downloaded offline packs no longer reduce the storage space available for ambient caching of tiles and other resources. ([#15622](https://github.com/mapbox/mapbox-gl-native/pull/15622)) -* Added the `MLNMapView.prefetchesTiles` property to configure lower-resolution tile prefetching behavior. ([#14816](https://github.com/mapbox/mapbox-gl-native/pull/14816)) -* Added the `-[MLNOfflineStorage preloadData:forURL:modificationDate:expirationDate:eTag:mustRevalidate:completionHandler:]` method for determining when the data is ready to retrieve from the cache. ([#188](https://github.com/mapbox/mapbox-gl-native-ios/pull/188)) -* Fixed a crash when `-[MLNOfflinePack invalidate]` is called on different threads. ([#15582](https://github.com/mapbox/mapbox-gl-native/pull/15582)) -* Fixed issues where an offline pack would stop downloading before completion. ([#16230](https://github.com/mapbox/mapbox-gl-native/pull/16230), [#16240](https://github.com/mapbox/mapbox-gl-native/pull/16240)) -* When an offline pack encounters an HTTP 404 error, the `MLNOfflinePackUserInfoKeyError` user info key of the `MLNOfflinePackErrorNotification` now indicates the resource that could not be downloaded. ([#16240](https://github.com/mapbox/mapbox-gl-native/pull/16240)) -* Expired resources are now fetched at a lower priority than new resources. ([#15950](https://github.com/mapbox/mapbox-gl-native/pull/15950)) - -### Localization and internationalization - -* The `MLNIdeographicFontFamilyName` Info.plist key now also accepts an array of font family names, to customize font fallback behavior. It can also be set to a Boolean value of `NO` to force the SDK to typeset CJK characters in a remote font specified by `MLNSymbolStyleLayer.textFontNames`. ([#14862](https://github.com/mapbox/mapbox-gl-native/pull/14862)) -* The `MLNIdeographicFontFamilyName` Info.plist key can now be set to the display names or PostScript names of individual fonts. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) -* The `-[MLNStyle localizeLabelsIntoLocale:]` and `-[NSExpression mgl_expressionLocalizedIntoLocale:]` methods can now localize text into Traditional Chinese and Vietnamese. ([#173](https://github.com/mapbox/mapbox-gl-native-ios/pull/173)) - -### Other changes - -* Fixed a memory leak when zooming with any options enabled in the `MLNMapView.debugMask` property. ([#15395](https://github.com/mapbox/mapbox-gl-native/pull/15395)) -* `MLNLoggingLevel` has been updated to better match core log levels. You can now use `MLNLoggingConfiguration.loggingLevel` to filter logs from core. ([#15120](https://github.com/mapbox/mapbox-gl-native/pull/15120)) - -## 0.14.0 - May 22, 2018 - -### Styles and rendering - -* Client-side text rendering of CJK ideographs is now enabled by default. ([#13988](https://github.com/mapbox/mapbox-gl-native/pull/13988)) -* Added an `MLNStyle.performsPlacementTransitions` property to control how long it takes for colliding labels to fade out. ([#13565](https://github.com/mapbox/mapbox-gl-native/pull/13565)) -* Added the `-[MLNShapeSource leavesOfCluster:offset:limit:]`, `-[MLNShapeSource childrenOfCluster:]`, `-[MLNShapeSource zoomLevelForExpandingCluster:]` methods for inspecting a cluster in an `MLNShapeSource`s created with the `MLNShapeSourceOptionClustered` option. Feature querying now returns clusters represented by `MLNPointFeatureCluster` objects (that conform to the `MLNCluster` protocol). ([#12952](https://github.com/mapbox/mapbox-gl-native/pull/12952) -* Fixed a crash when casting large numbers in `NSExpression`. ([#13580](https://github.com/mapbox/mapbox-gl-native/pull/13580)) -* Fixed an issue that caused `MLN_FUNCTION` to ignore multiple formatting parameters when passed a `format` function as parameter. ([#14064](https://github.com/mapbox/mapbox-gl-native/pull/14064)) -* Added `mgl_attributed:` expression operator, which concatenates `MLNAttributedExpression` objects for specifying rich text in the `MLNSymbolStyleLayer.text` property. ([#14094](https://github.com/mapbox/mapbox-gl-native/pull/14094)) -* Fixed an issue that caused conditional expressions to crash when passed nested conditional expressions as parameters. ([#14181](https://github.com/mapbox/mapbox-gl-native/pull/14181)) -* Fixed a possible crash with certain expressions containing arguments that evaluate to a dictionary containing `NSArray` or `NSNumber` values. ([#14352](https://github.com/mapbox/mapbox-gl-native/pull/14352)) -* Fixed a bug where non-opaque `NSColor` values were ignored when assigned to a style layer color property. ([#14406](https://github.com/mapbox/mapbox-gl-native/pull/14406)) -* Fixed a bug where some layers weren’t rendering correctly after panning. ([#14527](https://github.com/mapbox/mapbox-gl-native/pull/14527)) -* Changed placement order of `MLNSymbolStyleLayer` to match the viewport-y order when `MLNSymbolStyleLayer.symbolZOrder` is set to `MLNSymbolZOrderViewportY`, allowing icons to overlap but not text. ([#14486](https://github.com/mapbox/mapbox-gl-native/pull/14486)) - -### Other changes - -* Added Czech and Galician localizations. ([#13782](https://github.com/mapbox/mapbox-gl-native/pull/13782), [#14095](https://github.com/mapbox/mapbox-gl-native/pull/14095)) -* Added `MLNNetworkConfiguration` class to customize the SDK’s `NSURLSessionConfiguration` object. ([#13886](https://github.com/mapbox/mapbox-gl-native/pull/13886)) -* Fixed a bug with `MLNMapView.visibleAnnotations` that resulted in incorrect results and performance degradation. ([#13745](https://github.com/mapbox/mapbox-gl-native/pull/13745)) -* Fixed a bug where selecting partially on-screen annotations (without a callout) would move the map. ([#13727](https://github.com/mapbox/mapbox-gl-native/pull/13727)) -* Fixed a bug that caused offline packs created prior to v0.7.0 (introduced in [#11055](https://github.com/mapbox/mapbox-gl-native/pull/11055)) to be marked as `MLNOfflinePackStateInactive`. ([#14188](https://github.com/mapbox/mapbox-gl-native/pull/14188)) - -## 0.13.0 - December 20, 2018 - -### Packaging - -* This SDK’s dynamic framework now has a bundle identifier of `com.mapbox.Mapbox`. ([#12857](https://github.com/mapbox/mapbox-gl-native/pull/12857)) -* `MLNMapView`, `MLNShapeOfflineRegion`, and `MLNTilePyramidOfflineRegion` now default to version 11 of the Mapbox Streets style. Similarly, several class properties of `MLNStyle`, such as `MLNStyle.lightStyleURL`, have been updated to return URLs to new versions of their respective styles. ([#13585](https://github.com/mapbox/mapbox-gl-native/pull/13585)) - -### Styles and rendering - -* Fixed an issue where the `{prefix}` token in tile URL templates was evaluated incorrectly when requesting a source’s tiles. ([#13429](https://github.com/mapbox/mapbox-gl-native/pull/13429)) -* Added an `-[MLNStyle removeSource:error:]` method that returns a descriptive error if the style fails to remove the source, whereas `-[MLNStyle removeSource:]` fails silently. ([#13399](https://github.com/mapbox/mapbox-gl-native/pull/13399)) -* Added the `MLNFillExtrusionStyleLayer.fillExtrusionHasVerticalGradient` property. ([#13463](https://github.com/mapbox/mapbox-gl-native/pull/13463)) -* Added support for setting `MLNCollisionBehaviorPre4_0` in `NSUserDefaults`. ([#13426](https://github.com/mapbox/mapbox-gl-native/pull/13426)) -* `-[MLNStyle localizeLabelsIntoLocale:]` and `-[NSExpression(MLNAdditions) mgl_expressionLocalizedIntoLocale:]` can automatically localize styles that use version 8 of the Mapbox Streets source. ([#13481](https://github.com/mapbox/mapbox-gl-native/pull/13481)) -* Fixed symbol flickering during instantaneous transitions. ([#13535](https://github.com/mapbox/mapbox-gl-native/pull/13535)) -* Fixed a crash when specifying `MLNShapeSourceOptionLineDistanceMetrics` when creating an `MLNShapeSource`. ([#13543](https://github.com/mapbox/mapbox-gl-native/pull/13543)) - -### Other changes - -* Renamed `-[MLNOfflineStorage putResourceWithUrl:data:modified:expires:etag:mustRevalidate:]` to `-[MLNOfflineStorage preloadData:forURL:modificationDate:expirationDate:eTag:mustRevalidate:]`. ([#13318](https://github.com/mapbox/mapbox-gl-native/pull/13318)) -* `MLNMapSnapshotter` now respects the `MLNIdeographicFontFamilyName` key in Info.plist, which reduces bandwidth consumption when snapshotting regions that contain Chinese or Japanese characters. ([#13427](https://github.com/mapbox/mapbox-gl-native/pull/13427)) -* Added `MLNLoggingConfiguration` and `MLNLoggingBlockHandler` that handle error and fault events produced by the SDK. ([#13235](https://github.com/mapbox/mapbox-gl-native/pull/13235)) - -## 0.12.0 - November 8, 2018 - -### Styles and rendering - -* `MLNSymbolStyleLayer.text` can now be set to rich text with varying fonts and text sizes. ([#12624](https://github.com/mapbox/mapbox-gl-native/pull/12624)) -* Added an `MLNSymbolStyleLayer.symbolZOrder` property for forcing point features in a symbol layer to be layered in the same order that they are specified in the layer’s associated source. ([#12783](https://github.com/mapbox/mapbox-gl-native/pull/12783)) -* Fixed a crash when the `MLNBackgroundStyleLayer.backgroundPattern`, `MLNFillExtrusionStyleLayer.fillExtrusionPattern`, `MLNFillStyleLayer.fillPattern`, or `MLNLineStyleLayer.linePattern` property evaluates to `nil` for a particular feature. ([#12896](https://github.com/mapbox/mapbox-gl-native/pull/12896)) -* Fixed a crash when using the `MLN_LET`, `MLN_MATCH`, `MLN_IF`, or `MLN_FUNCTION` functions without a colon inside an `NSExpression` or `NSPredicate` format string. ([#13189](https://github.com/mapbox/mapbox-gl-native/pull/13189)) -* Fixed a crash setting the `MLNLineStyleLayer.lineGradient` property to an expression containing the `$lineProgress` variable. Added an `NSExpression.lineProgressVariableExpression` class property that returns an expression for the `$lineProgress` variable. ([#13192](https://github.com/mapbox/mapbox-gl-native/pull/13192)) -* Fixed an issue where features in `MLNFillStyleLayer` and `MLNLineStyleLayer` would occasionally flicker when zooming in and out. ([#12982](https://github.com/mapbox/mapbox-gl-native/pull/12982)) -* Feature querying can now return point features represented by icons that have both the `MLNSymbolStyleLayer.iconRotation` and `MLNSymbolStyleLayer.iconOffset` properties applied. ([#13105](https://github.com/mapbox/mapbox-gl-native/pull/13105)) -* Fixed a crash when casting an `NSColor` to an `NSColor` inside an `NSExpression`. ([#12864](https://github.com/mapbox/mapbox-gl-native/pull/12864)) -* `NIL` cast to an `NSNumber` now evaluates to 0 inside an `NSExpression`. ([#12864](https://github.com/mapbox/mapbox-gl-native/pull/12864)) -* Fixed a crash when applying the `to-array` operator to an empty array inside a JSON expression. ([#12864](https://github.com/mapbox/mapbox-gl-native/pull/12864)) -* Added the `MLNCollisionBehaviorPre4_0` Info.plist key to restore the collision detection behavior in version 0.6 of the SDK. ([#12941](https://github.com/mapbox/mapbox-gl-native/pull/12941)) - -### Offline maps - -* Network requests by `MLNMapView` are now prioritized over offline pack downloads. ([#13019](https://github.com/mapbox/mapbox-gl-native/pull/13019)) -* Added `-[MLNOfflineStorage addContentsOfFile:withCompletionHandler:]` and `-[MLNOfflineStorage addContentsOfURL:withCompletionHandler:]` methods to add pregenerated offline packs to offline storage. ([#12791](https://github.com/mapbox/mapbox-gl-native/pull/12791)) -* Added the `-[MLNOfflineStorage putResourceWithUrl:data:modified:expires:etag:mustRevalidate:]` method to allow pre-warming of the ambient cache. ([#13119](https://github.com/mapbox/mapbox-gl-native/pull/13119)) -* Fixed an issue where some tiles were rendered incorrectly when the device was unable to connect to the Internet. ([#12931](https://github.com/mapbox/mapbox-gl-native/pull/12931)) - -### Other changes - -* Added `MLNAltitudeForZoomLevel()` and `MLNZoomLevelForAltitude()` methods for converting between zoom levels used by `MLNMapView` and altitudes used by `MLNMapCamera`. ([#12986](https://github.com/mapbox/mapbox-gl-native/pull/12986)) -* Deprecated the `+[MLNMapCamera cameraLookingAtCenterCoordinate:fromDistance:pitch:heading:]` method in favor of `+[MLNMapCamera cameraLookingAtCenterCoordinate:altitude:pitch:heading:]` and `+[MLNMapCamera cameraLookingAtCenterCoordinate:acrossDistance:pitch:heading:]`. ([#12966](https://github.com/mapbox/mapbox-gl-native/pull/12966)) -* Fixed an issue where `+[MLNMapCamera cameraLookingAtCenterCoordinate:fromEyeCoordinate:eyeAltitude:]` created a camera looking from the wrong eye coordinate. ([#12966](https://github.com/mapbox/mapbox-gl-native/pull/12966)) -* Added an `MLNMapCamera.viewingDistance` property based on the existing `MLNMapCamera.altitude` property. ([#12966](https://github.com/mapbox/mapbox-gl-native/pull/12966)) -* Fixed an issue where the map view could not be panned after setting `MLNMapView.visibleCoordinateBounds` to a coordinate bounds that spanned exactly the longitudes −180° and 180°. ([#13006](https://github.com/mapbox/mapbox-gl-native/pull/13006)) -* Fixed an issue where `-[MLNMapSnapshotter startWithQueue:completionHandler:]` failed to call its completion handler in some cases. ([#12355](https://github.com/mapbox/mapbox-gl-native/pull/12355)) -* Fixed an issue where snapshots had the wrong heading and pitch. ([#13123](https://github.com/mapbox/mapbox-gl-native/pull/13123)) -* Fixed an issue where `MLNMapView` produced a designable error in Interface Builder storyboards in Xcode 10. ([#12883](https://github.com/mapbox/mapbox-gl-native/pull/12883)) - -## 0.11.0 - September 13, 2018 - -### Styles and rendering - -* When a symbol in an `MLNSymbolStyleLayer` has both an icon and text, both are shown or hidden together based on available space. ([#12521](https://github.com/mapbox/mapbox-gl-native/pull/12521)) -* Invalid values of `MLNSymbolStyleLayer.textFontNames` are treated as warnings instead of errors. ([#12414](https://github.com/mapbox/mapbox-gl-native/pull/12414)) -* Added an `MLNLineStyleLayer.lineGradient` property that can be used to define a gradient with which to color a line feature. ([#12575](https://github.com/mapbox/mapbox-gl-native/pull/12575)) -* The `MLNLineStyleLayer.linePattern`, `MLNFillStyleLayer.fillPattern`, and `MLNFillStyleLayer.fillExtrusionPattern` properties can now be set to expressions that refer to feature attributes. ([#12284](https://github.com/mapbox/mapbox-gl-native/pull/12284)) -* Reduced the amount of memory consumed by font data after changing the style. ([#12414](https://github.com/mapbox/mapbox-gl-native/pull/12414)) -* `-[MLNShapeSource initWithIdentifier:shape:options:]` and `-[MLNComputedShapeSource setFeatures:inTileAtX:y:zoomLevel:]` warn about possible attribute loss when passing in an `MLNShapeCollection` object. ([#12625](https://github.com/mapbox/mapbox-gl-native/pull/12625)) -* Added an `MLNShapeSourceOptionLineDistanceMetrics` option that enables or disables calculating line distance metrics. ([#12604](https://github.com/mapbox/mapbox-gl-native/pull/12604)) -* Fixed an issue where the `cubic-bezier` curve type for `mgl_interpolate:withCurveType:parameters:stops:` expressions was misinterpreted for some style layer properties. ([#12826](https://github.com/mapbox/mapbox-gl-native/pull/12826)) -* Fixed an issue that could cause symbols to fade in during pan operations instead of always showing when using `MLNSymbolStyleLayer.iconAllowsOverlap` or `MLNSymbolStyleLayer.textAllowsOverlap` properties. ([#12698](https://github.com/mapbox/mapbox-gl-native/pull/12698)) - -### Offline maps - -* Added the `MLNShapeOfflineRegion` class for creating an offline pack that covers an arbitrary shape. ([#11447](https://github.com/mapbox/mapbox-gl-native/pull/11447)) -* Fixed crashes when offline storage encountered certain SQLite errors. ([#12224](https://github.com/mapbox/mapbox-gl-native/pull/12224)) - -### Other changes - -* The `-[MLNMapView annotationAtPoint:]` method can now return annotations near tile boundaries at high zoom levels. ([#12570](https://github.com/mapbox/mapbox-gl-native/pull/12570)) -* Added an `-[MLNMapViewDelegate mapView:shapeAnnotationIsEnabled:]` method to specify whether an annotation is selectable. ([#12352](https://github.com/mapbox/mapbox-gl-native/pull/12352)) -* Fixed inconsistencies in exception naming. ([#12583](https://github.com/mapbox/mapbox-gl-native/issues/12583)) -* Fixed an issue where `-[MLNMapView convertCoordinateBounds:toRectToView:]` would return an empty CGRect if the bounds crossed the antimeridian. ([#12758](https://github.com/mapbox/mapbox-gl-native/pull/12758)) - -## 0.10.0 - August 15, 2018 - -## Styles and rendering - -* Token string syntax (`"{token}"`) in `MLNSymbolStyleLayer` `text` and `iconImageName` properties is now correctly converted to the appropriate `NSExpression` equivalent. ([#11659](https://github.com/mapbox/mapbox-gl-native/issues/11659)) -* Fixed a crash when switching between two styles having layers with the same identifier but different layer types. ([#12432](https://github.com/mapbox/mapbox-gl-native/issues/12432)) -* Added a new option to `MLNSymbolPlacement`, `MLNSymbolPlacementLineCenter`, that places the label relative to the center of the geometry. ([#12337](https://github.com/mapbox/mapbox-gl-native/pull/12337)) - -## Other changes - -* Fixed an issue where the symbols for `MLNMapPointForCoordinate` could not be found. ([#12445](https://github.com/mapbox/mapbox-gl-native/issues/12445)) -* Fixed an issue causing country and ocean labels to disappear after calling `-[MLNStyle localizeLabelsIntoLocale:]` when the system language is set to Simplified Chinese. ([#12164](https://github.com/mapbox/mapbox-gl-native/issues/12164)) -* Closed a security vulnerability introduced in 0.8.0 that would potentially allow the owner of a style to compromise apps loading that style. ([#12571](https://github.com/mapbox/mapbox-gl-native/pull/12571)) - -## 0.9.0 - July 18, 2018 - -## Styles and rendering - -* Added an `MLNRasterStyleLayer.rasterResamplingMode` property for configuring how raster style layers are overscaled. ([#12176](https://github.com/mapbox/mapbox-gl-native/pull/12176)) -* `-[MLNStyle localizeLabelsIntoLocale:]` and `-[NSExpression mgl_expressionLocalizedIntoLocale:]` can automatically localize labels into Japanese or Korean based on the system’s language settings. ([#12286](https://github.com/mapbox/mapbox-gl-native/pull/12286)) -* The `c` and `d` options are supported within comparison predicates for case and diacritic insensitivity, respectively. ([#12329](https://github.com/mapbox/mapbox-gl-native/pull/12329)) -* Added the `collator` and `resolved-locale` expression operators to more precisely compare strings in style JSON. A subset of this functionality is available through predicate options when creating an `NSPredicate`. ([#11869](https://github.com/mapbox/mapbox-gl-native/pull/11869)) -* Fixed a crash in `-[MLNStyle localizeLabelsIntoLocale:]` on macOS 10.11. ([#12123](https://github.com/mapbox/mapbox-gl-native/pull/12123)) -* Fixed a crash that occurred when creating an `MLN_MATCH` expression using non-expressions as arguments. ([#12332](https://github.com/mapbox/mapbox-gl-native/pull/12332)) -* Fixed a crash when trying to parse expressions containing legacy filters. ([#12263](https://github.com/mapbox/mapbox-gl-native/pull/12263)) - -## Other changes - -* Added `-[MLNMapView camera:fittingShape:edgePadding:]` and `-[MLNMapView camera:fittingCoordinateBounds:edgePadding:]` allowing you specify the pitch and direction for the calculated camera. ([#12213](https://github.com/mapbox/mapbox-gl-native/pull/12213)) -* Added `-[MLNMapSnapshot coordinateForPoint:]` that returns a map coordinate for a specified snapshot image point. ([#12221](https://github.com/mapbox/mapbox-gl-native/pull/12221)) -* Fixed an issue where `-[MLNMapShapshot pointForCoordinate:]` returned incorrect points. ([#12221](https://github.com/mapbox/mapbox-gl-native/pull/12221)) -* Improved caching performance. ([#12072](https://github.com/mapbox/mapbox-gl-native/pull/12072)) -* Remove unnecessary memory use when collision debug mode is disabled. ([#12294](https://github.com/mapbox/mapbox-gl-native/issues/12294)) - -## 0.8.0 - June 20, 2018 - -### Packaging - -* The minimum deployment target for this SDK is now macOS 10.11.0. ([#11776](https://github.com/mapbox/mapbox-gl-native/pull/11776)) -* Fixed an issue where `MLNMapView` produced a designable error in Interface Builder storyboards. ([#12140](https://github.com/mapbox/mapbox-gl-native/pull/12140)) - -### Styles and rendering - -* Added support for aggregate expressions as input values to `MLN_MATCH` expressions. ([#11866](https://github.com/mapbox/mapbox-gl-native/pull/11866)) -* Fixed a crash that occurred when style JSON contained an invalid filter containing an expression. ([#12065](https://github.com/mapbox/mapbox-gl-native/pull/12065)) -* Fixed a crash in `-[MLNStyle localizeLabelsIntoLocale:]` on macOS 10.11. ([#12123](https://github.com/mapbox/mapbox-gl-native/pull/12123)) -* Unknown tokens in URLs are now preserved, rather than replaced with an empty string. ([#11787](https://github.com/mapbox/mapbox-gl-native/issues/11787)) -* Fixed an issue preventing nested key path expressions from accessing the correct feature attributes. ([#11959](https://github.com/mapbox/mapbox-gl-native/pull/11959)) -* Fixed an issue where `MLNSymbolStyleLayer` flickered when straddling the antimeridian. ([#11938](https://github.com/mapbox/mapbox-gl-native/pull/11938)) - -### Other changes - -* Adjusted when and how the camera transition update and finish callbacks are called, fixing recursion bugs. ([#11614](https://github.com/mapbox/mapbox-gl-native/pull/11614)) -* Fixed a crash that could occur when reusing `MLNMapSnapshotter` or using multiple snapshotters at the same time. ([#11831](https://github.com/mapbox/mapbox-gl-native/pull/11831)) -* Fixed an issue where an empty `MLNFeature` array caused high CPU utilization. ([#11985](https://github.com/mapbox/mapbox-gl-native/pull/11985)) -* Improved offline download performance. ([#11284](https://github.com/mapbox/mapbox-gl-native/pull/11284)) -* Fixed an issue that caused -[MLNMapView visibleFeaturesAtPoint:] to return an empty array when adding or removing features. ([#12076](https://github.com/mapbox/mapbox-gl-native/pull/12076)) - -## 0.7.1 - May 15, 2018 - -### Style layers - -* Deprecated `+[NSExpression featurePropertiesVariableExpression]`; use `+[NSExpression featureAttributesVariableExpression]` instead. ([#11748](https://github.com/mapbox/mapbox-gl-native/pull/11748)) -* Added an `-[NSPredicate(MLNAdditions) predicateWithMLNJSONObject:]` method and `NSPredicate.mgl_jsonExpressionObject` property. ([#11810](https://github.com/mapbox/mapbox-gl-native/pull/11810)) -* Added `FIRST`, `LAST`, and `SIZE` symbolic array subscripting support to expressions. ([#11770](https://github.com/mapbox/mapbox-gl-native/pull/11770)) -* Inside an expression, casting `nil` to a string turns it into the empty string instead of the string `"null"`. ([#11904](https://github.com/mapbox/mapbox-gl-native/pull/11904)) -* Fixed an issue where certain colors were being misrepresented in `NSExpression` obtained from `MLNStyleLayer` getters. ([#11725](https://github.com/mapbox/mapbox-gl-native/pull/11725)) - -### Annotations - -* Fixed an issue where selecting an onscreen annotation could move the map unintentionally. ([#11731](https://github.com/mapbox/mapbox-gl-native/pull/11731)) -* Fixed an issue where an `MLNOverlay` object straddling the antimeridian had an empty `MLNOverlay.overlayBounds` value. ([#11783](https://github.com/mapbox/mapbox-gl-native/pull/11783)) - -### Other changes - -* Reduced per-frame render CPU time. ([#11811](https://github.com/mapbox/mapbox-gl-native/issues/11811)) -* Fixed a crash when removing an `MLNOfflinePack`. ([#6092](https://github.com/mapbox/mapbox-gl-native/issues/6092)) -* If English is the first language listed in the user’s Preferred Languages setting, `-[MLNStyle localizeLabelsIntoLocale:]` no longer prioritizes other languages over English. ([#11907](https://github.com/mapbox/mapbox-gl-native/pull/11907)) - -## 0.7.0 - April 19, 2018 - -The 0.7._x_ series of releases will be the last to support macOS 10.10. The minimum macOS deployment version will increase to macOS 10.11.0 in a future release. - -### Packaging - -* Added Arabic, Danish, Hebrew, and European Portuguese localizations. ([#10967](https://github.com/mapbox/mapbox-gl-native/pull/10967), [#11136](https://github.com/mapbox/mapbox-gl-native/pull/11134), [#11695](https://github.com/mapbox/mapbox-gl-native/pull/11695)) -* Removed methods, properties, and constants that had been deprecated as of v0.6.1. ([#11205](https://github.com/mapbox/mapbox-gl-native/pull/11205)) -* Refined certain Swift interfaces by converting them from class methods to class properties. ([#11674](https://github.com/mapbox/mapbox-gl-native/pull/11674)) - -### Style layers - -* The layout and paint properties on subclasses of `MLNStyleLayer` are now of type `NSExpression` instead of `MLNStyleValue`. A new “Predicates and Expressions” guide provides an overview of the supported operators, which include arithmetic and conditional operators. ([#10726](https://github.com/mapbox/mapbox-gl-native/pull/10726)) -* A style can now display a heatmap layer that visualizes a point data distribution. You can customize the appearance at runtime using the `MLNHeatmapStyleLayer` class. ([#11046](https://github.com/mapbox/mapbox-gl-native/pull/11046)) -* A style can now display a smooth hillshading layer and customize its appearance at runtime using the `MLNHillshadeStyleLayer` class. Hillshading is based on a rasterized digital elevation model supplied by the `MLNRasterDEMSource` class. ([#10642](https://github.com/mapbox/mapbox-gl-native/pull/10642)) -* You can now set the `MLNVectorStyleLayer.predicate` property to a predicate that contains arithmetic and calls to built-in `NSExpression` functions. You may need to cast a feature attribute key to `NSString` or `NSNumber` before comparing it to a string or number. ([#11587](https://github.com/mapbox/mapbox-gl-native/pull/11587)) -* Replaced the `MLNStyle.localizesLabels` property with an `-[MLNStyle localizeLabelsIntoLocale:]` method that allows you to specify the language to localize into. Note that this method does not automatically update the style when the system’s preferred language changes. Also added an `-[NSExpression(MLNAdditions) mgl_expressionLocalizedIntoLocale:]` method for localizing an individual value used with `MLNSymbolStyleLayer.text`. ([#11651](https://github.com/mapbox/mapbox-gl-native/pull/11651)) -* Fixed incorrect color calibration on macOS 10.13 High Sierra when using color-related methods of `MLNStyleLayer` subclasses, as well as when displaying an `MLNAttributionInfo`. It is no longer necessary to explicitly convert an `NSColor` to the sRGB color space before using these classes on High Sierra. ([#11391](https://github.com/mapbox/mapbox-gl-native/pull/11391)) -* The `MLNSymbolStyleLayer.textFontNames` property can now depend on a feature’s attributes. ([#10850](https://github.com/mapbox/mapbox-gl-native/pull/10850)) -* Changes to the `MLNStyleLayer.minimumZoomLevel` and `MLNStyleLayer.maximumZoomLevel` properties take effect immediately. ([#11399](https://github.com/mapbox/mapbox-gl-native/pull/11399)) - -### Content sources - -* Renamed `MLNRasterSource` to `MLNRasterTileSource` and `MLNVectorSource` to `MLNVectorTileSource`. ([#11568](https://github.com/mapbox/mapbox-gl-native/pull/11568)) -* Added an `MLNComputedShapeSource` class that allows applications to supply vector data to a style layer on a per-tile basis. ([#9983](https://github.com/mapbox/mapbox-gl-native/pull/9983)) -* Properties such as `MLNSymbolStyleLayer.iconAllowsOverlap` and `MLNSymbolStyleLayer.iconIgnoresPlacement` now account for symbols in other sources. ([#10436](https://github.com/mapbox/mapbox-gl-native/pull/10436)) - -### Map rendering - -* Improved the reliability of collision detection between symbols near the edges of tiles, as well as between symbols when the map is tilted. It is no longer necessary to enable `MLNSymbolStyleLayer.symbolAvoidsEdges` to prevent symbols in adjacent tiles from overlapping with each other. ([#10436](https://github.com/mapbox/mapbox-gl-native/pull/10436)) -* Symbols can fade in and out as the map pans, rotates, or tilts. ([#10436](https://github.com/mapbox/mapbox-gl-native/pull/10436)) -* Properties such as `MLNSymbolStyleLayer.iconAllowsOverlap` and `MLNSymbolStyleLayer.iconIgnoresPlacement` now account for symbols in other sources. ([#10436](https://github.com/mapbox/mapbox-gl-native/pull/10436)) -* Added the `MLNTileSourceOptionTileCoordinateBounds` option to create an `MLNTileSource` that only supplies tiles within a specific geographic bounding box. ([#11141](https://github.com/mapbox/mapbox-gl-native/pull/11141)) -* Fixed an issue preventing a dynamically-added `MLNRasterStyleLayer` from drawing until the map pans. ([#10270](https://github.com/mapbox/mapbox-gl-native/pull/10270)) -* Fixed an issue preventing `MLNImageSource`s from drawing on the map when the map is zoomed in and tilted. ([#10677](https://github.com/mapbox/mapbox-gl-native/pull/10677)) -* Improved the sharpness of raster tiles on Retina displays. ([#10984](https://github.com/mapbox/mapbox-gl-native/pull/10984)) -* Fixed a crash parsing a malformed style. ([#11001](https://github.com/mapbox/mapbox-gl-native/pull/11001)) -* Fixed an issue where symbols with empty labels would always be hidden. ([#11206](https://github.com/mapbox/mapbox-gl-native/pull/11206)) -* Fixed an issue where a tilted map could flicker while displaying rotating symbols. ([#11488](https://github.com/mapbox/mapbox-gl-native/pull/11488)) -* Increased the maximum width of labels by a factor of two. ([#11508](https://github.com/mapbox/mapbox-gl-native/pull/11508)) - -### Annotations - -* Fixed an issue where tapping a group of annotations may not have selected the nearest annotation. ([#11438](https://github.com/mapbox/mapbox-gl-native/pull/11438)) -* The `MLNMapView.selectedAnnotations` property (backed by `-[MLNMapView setSelectedAnnotations:]`) now selects annotations that are off-screen. ([#9790](https://github.com/mapbox/mapbox-gl-native/issues/9790)) -* The `animated` parameter to `-[MLNMapView selectAnnotation:animated:]` now controls whether the annotation and its callout are brought on-screen. If `animated` is `NO` then the annotation is selected if offscreen, but the map is not panned. Currently only point annotations are supported.([#3249](https://github.com/mapbox/mapbox-gl-native/issues/3249)) -* Fixed a crash when rapidly adding and removing annotations. ([#11551](https://github.com/mapbox/mapbox-gl-native/issues/11551), [#11575](https://github.com/mapbox/mapbox-gl-native/issues/11575)) - -### Map snapshots - -* Fixed a memory leak that occurred when creating a map snapshot. ([#10585](https://github.com/mapbox/mapbox-gl-native/pull/10585)) -* Fixed an issue that caused `MLNMapSnapshotter.pointForCoordinate` to return an incorrect value. ([#11035](https://github.com/mapbox/mapbox-gl-native/pull/11035)) - -### Other changes - -* The `-[MLNMapView convertRect:toCoordinateBoundsFromView:]` method and the `MLNMapView.visibleCoordinateBounds` property’s getter now indicate that the coordinate bounds straddles the antimeridian by extending one side beyond ±180 degrees longitude. ([#11265](https://github.com/mapbox/mapbox-gl-native/pull/11265)) -* Feature querying results now account for the `MLNSymbolStyleLayer.circleStrokeWidth` property. ([#10897](https://github.com/mapbox/mapbox-gl-native/pull/10897)) -* Reduced offline download sizes for styles with symbol layers that render only icons, and no text. ([#11055](https://github.com/mapbox/mapbox-gl-native/pull/11055)) - -## v0.6.1 - January 16, 2018 - -This version of the Mapbox macOS SDK corresponds to version 3.7.3 of the Mapbox Maps SDK for iOS. - -* Fixed a crash while zooming while annotations are present on the map. ([#10791](https://github.com/mapbox/mapbox-gl-native/pull/10791)) -* CJK characters can be displayed in a locally installed font or a custom font bundled with the application, reducing map download times. Specify the font name using the `MLNIdeographicFontFamilyName` key in the application’s Info.plist file. ([#10522](https://github.com/mapbox/mapbox-gl-native/pull/10522)) - -## v0.6.0 - December 23, 2017 - -This version of the Mapbox macOS SDK corresponds to version 3.7.2 of the Mapbox Maps SDK for iOS. - -### Packaging - -* Renamed this SDK from Mapbox macOS SDK to Mapbox Maps SDK for macOS. ([#10610](https://github.com/mapbox/mapbox-gl-native/pull/10610), [#10793](https://github.com/mapbox/mapbox-gl-native/pull/10793)) -* Added a Bulgarian localization. ([#10309](https://github.com/mapbox/mapbox-gl-native/pull/10309)) - -### Networking and storage - -* Added a new `MLNMapSnapshotter` class for capturing rendered map images from an `MLNMapView`’s camera. ([#9891](https://github.com/mapbox/mapbox-gl-native/pull/9891)) -* Reduced the time it takes to create new `MLNMapView` instances in some cases. ([#9864](https://github.com/mapbox/mapbox-gl-native/pull/9864)) -* Added support for forced cache revalidation that will eliminate flickering that was sometimes visible for certain types of tiles (e.g., traffic tiles). ([#9670](https://github.com/mapbox/mapbox-gl-native/pull/9670), [#9103](https://github.com/mapbox/mapbox-gl-native/issues/9103)) -* Improved the performance of the SDK when parsing vector tile data used to render the map. ([#9312](https://github.com/mapbox/mapbox-gl-native/pull/9312)) - -### Styles - -* Added a new type of source, represented by the `MLNImageSource` class at runtime, that displays a georeferenced image. ([#9110](https://github.com/mapbox/mapbox-gl-native/pull/9110)) -* Setting a style using `MLNMapView`'s `styleURL` property now smoothly transitions from the previous style to the new style and maintains equivalent layers and sources along with their identifiers. ([#9256](https://github.com/mapbox/mapbox-gl-native/pull/9256)) -* Added `MLNCircleStyleLayer.circlePitchAlignment` and `MLNSymbolStyleLayer.iconPitchAlignment` properties to control whether circles and symbols lie flat against a tilted map. ([#9426](https://github.com/mapbox/mapbox-gl-native/pull/9426), [#9479](https://github.com/mapbox/mapbox-gl-native/pull/9479)) -* Added an `MLNSymbolStyleLayer.iconAnchor` property to control where an icon is anchored. ([#9849](https://github.com/mapbox/mapbox-gl-native/pull/9849)) -* The `maximumTextWidth` and `textLetterSpacing` properties of `MLNSymbolStyleLayer` are now compatible with `MLNSourceStyleFunction`s and `MLNCompositeStyleFunction`s, allowing data-driven styling of these properties. ([#9870](https://github.com/mapbox/mapbox-gl-native/pull/9870)) -* Improved the legibility of labels that follow lines when the map is tilted. ([#9009](https://github.com/mapbox/mapbox-gl-native/pull/9009)) -* Fixed an issue that could cause flickering when a translucent raster style layer was present. ([#9468](https://github.com/mapbox/mapbox-gl-native/pull/9468)) -* Fixed an issue that could cause antialiasing between polygons on the same layer to fail if the fill layers used data-driven styling for the fill color. ([#9699](https://github.com/mapbox/mapbox-gl-native/pull/9699)) -* The previously deprecated support for style classes has been removed. For interface compatibility, the API methods remain, but they are now non-functional. - -### Annotations and user interaction - -* Fixed several bugs and performance issues related to the use of annotations backed by `MLNAnnotationImage`s. The limits on the number and size of images and glyphs has been effectively eliminated and should now depend on hardware constraints. These fixes also apply to images used to represent icons in `MLNSymbolStyleLayer`s. ([#9213](https://github.com/mapbox/mapbox-gl-native/pull/9213)) -* Increased the default maximum zoom level from 20 to 22. ([#9835](https://github.com/mapbox/mapbox-gl-native/pull/9835)) -* Added an `overlays` property to `MLNMapView`. ([#8617](https://github.com/mapbox/mapbox-gl-native/pull/8617)) -* Fixed incorrect hit targets for `MLNAnnotationImage`-backed annotations that caused `-[MLNMapViewDelegate mapView:didSelectAnnotation:]` to be called unnecessarily. ([#10538](https://github.com/mapbox/mapbox-gl-native/pull/10538)) -* Added `-[MLNMapView cameraThatFitsShape:direction:edgePadding:]` to get a camera with zoom level and center coordinate computed to fit a shape. ([#10107](https://github.com/mapbox/mapbox-gl-native/pull/10107)) -* Added support selection of shape and polyline annotations.([#9984](https://github.com/mapbox/mapbox-gl-native/pull/9984)) -* Fixed an issue where a shape annotation callout was not displayed if the centroid was not visible. ([#10255](https://github.com/mapbox/mapbox-gl-native/pull/10255)) - -### Other changes - -* Fixed distortion in the logo view on macOS 10.13 High Sierra. ([#10606](https://github.com/mapbox/mapbox-gl-native/pull/10606)) -* Fixed an issue that could cause line label rendering glitches when the line geometry is projected to a point behind the plane of the camera. ([#9865](https://github.com/mapbox/mapbox-gl-native/pull/9865)) -* Fixed an issue that could cause a crash when using `-[MLNMapView flyToCamera:completionHandler:]` and related methods with zoom levels at or near the maximum value. ([#9381](https://github.com/mapbox/mapbox-gl-native/pull/9381)) -* Fixed an issue where removing a `MLNOpenGLStyleLayer` from a map might result in a crash. ([#10765](https://github.com/mapbox/mapbox-gl-native/pull/10765)) -* Added documentation for usage of coordinate bounds that cross the anti-meridian. ([#10783](https://github.com/mapbox/mapbox-gl-native/pull/10783)) -* Removed duplicated variables in `MLNMapSnapshotter`. ([#10702](https://github.com/mapbox/mapbox-gl-native/pull/10702)) - -## 0.5.1 - September 26, 2017 - -This version of the Mapbox macOS SDK corresponds to version 3.6.4 of the Mapbox iOS SDK. - -* Added an `MLNStyle.localizesLabels` property, off by default, that localizes any Mapbox Streets–sourced symbol layer into the user’s preferred language. ([#9582](https://github.com/mapbox/mapbox-gl-native/pull/9582)) -* Fixed an issue that caused `-[MLNShapeSource featuresMatchingPredicate:]` and `-[MLNVectorSource featuresInSourceLayersWithIdentifiers:predicate:]` to always return an empty array. ([#9784](https://github.com/mapbox/mapbox-gl-native/pull/9784)) -* `MLNMapView`’s `minimumZoomLevel` and `maximumZoomLevel` properties are now available in Interface Builder’s Attributes inspector. ([#9729](https://github.com/mapbox/mapbox-gl-native/pull/9729)) -* Added a Hungarian localization. ([#9945](https://github.com/mapbox/mapbox-gl-native/pull/9945)) -* Deprecated `+[MLNStyle trafficDayStyleURL]` and `+[MLNStyle trafficNightStyleURL]` with no replacement method. To use the Traffic Day and Traffic Night styles going forward, we recommend that you use the underlying URL. ([#9918](https://github.com/mapbox/mapbox-gl-native/pull/9918)) -* Fixed an issue where stale (but still valid) map data could be ignored in offline mode. ([#10012](https://github.com/mapbox/mapbox-gl-native/pull/10012)) - -## 0.5.0 - June 30, 2017 - -This version of the Mapbox macOS SDK corresponds to version 3.6.0 of the Mapbox iOS SDK. - -### Packaging - -* Xcode 8.0 or higher is now recommended for using this SDK. ([#8775](https://github.com/mapbox/mapbox-gl-native/pull/8775)) -* Updated MLNMapView’s logo view to display [the new Mapbox logo](https://www.mapbox.com/blog/new-mapbox-logo/). ([#8771](https://github.com/mapbox/mapbox-gl-native/pull/8771), [#8773](https://github.com/mapbox/mapbox-gl-native/pull/8773)) - -### Styles - -* Added support for 3D extrusion of buildings and other polygonal features via the `MLNFillExtrusionStyleLayer` class and the `fill-extrusion` layer type in style JSON. ([#8431](https://github.com/mapbox/mapbox-gl-native/pull/8431)) -* MLNMapView and MLNTilePyramidOfflineRegion now default to version 10 of the Mapbox Streets style. Similarly, several style URL class methods of MLNStyle return URLs to version 10 styles. Unversioned variations of these methods are no longer deprecated. `MLNStyleDefaultVersion` should no longer be used with any style other than Streets. ([#6301](https://github.com/mapbox/mapbox-gl-native/pull/6301)) -* Added class methods to MLNStyle that correspond to the new [Traffic Day and Traffic Night](https://www.mapbox.com/blog/live-traffic-maps/) styles. ([#6301](https://github.com/mapbox/mapbox-gl-native/pull/6301)) -* MLNSymbolStyleLayer’s `iconImageName`, `iconScale`, `textFontSize`, `textOffset`, and `textRotation` properties can now be set to a source or composite function. ([#8544](https://github.com/mapbox/mapbox-gl-native/pull/8544), [#8590](https://github.com/mapbox/mapbox-gl-native/pull/8590), [#8592](https://github.com/mapbox/mapbox-gl-native/pull/8592), [#8593](https://github.com/mapbox/mapbox-gl-native/pull/8593)) -* Fixed an issue where setting the `MLNVectorStyleLayer.predicate` property failed to take effect if the relevant source was not in use by a visible layer at the time. ([#8653](https://github.com/mapbox/mapbox-gl-native/pull/8653)) -* Fixed an issue preventing programmatically added style layers from appearing in already cached tiles. ([#8954](https://github.com/mapbox/mapbox-gl-native/pull/8954)) -* Fixed an issue causing a composite function’s highest zoom level stop to be misinterpreted. ([#8613](https://github.com/mapbox/mapbox-gl-native/pull/8613), [#8790](https://github.com/mapbox/mapbox-gl-native/pull/8790)) -* Fixed an issue where re-adding a layer that had been previously removed from a style would reset its paint properties. Moved initializers for `MLNTileSource`, `MLNStyleLayer`, and `MLNForegroundStyleLayer` to their concrete subclasses; because these classes were already intended for initialization only via concrete subclasses, this should have no developer impact. ([#8626](https://github.com/mapbox/mapbox-gl-native/pull/8626)) -* Fixed a crash that occurred when removing a source that was still being used by one or more style layers. Since this is a programming error, a warning is logged to the console instead. ([#9129](https://github.com/mapbox/mapbox-gl-native/pull/9129)) -* Feature querying results now account for any changes to a feature’s size caused by a source or composite style function. ([#8665](https://github.com/mapbox/mapbox-gl-native/pull/8665)) -* Fixed the behavior of composite functions that specify fractional zoom level stops. ([#9289](https://github.com/mapbox/mapbox-gl-native/pull/9289)) -* Letter spacing is now disabled in Arabic text so that ligatures are drawn correctly. ([#9062](https://github.com/mapbox/mapbox-gl-native/pull/9062)) -* Improved the performance of styles using source and composite style functions. ([#9185](https://github.com/mapbox/mapbox-gl-native/pull/9185), [#9257](https://github.com/mapbox/mapbox-gl-native/pull/9257)) - -### Annotations - -* The default marker image has been made slightly larger and now matches the version in the Mapbox iOS SDK. ([#9370](https://github.com/mapbox/mapbox-gl-native/pull/9370)) -* The `MLNPolyline.coordinate` and `MLNPolygon.coordinate` properties now return the midpoint and centroid, respectively, instead of the first coordinate. ([#8713](https://github.com/mapbox/mapbox-gl-native/pull/8713)) - -### User interaction - -* Fixed an issue causing the map to go blank during a flight animation that travels a very short distance. ([#9199](https://github.com/mapbox/mapbox-gl-native/pull/9199)) -* Fixed an issue causing the mouse cursor to jump after Shift- or Option-dragging the map. ([#9390](https://github.com/mapbox/mapbox-gl-native/pull/9390)) -* The Improve This Map button in the attribution action sheet now leads to a feedback tool that matches MLNMapView’s rotation and pitch. `-[MLNAttributionInfo feedbackURLAtCenterCoordinate:zoomLevel:]` no longer respects the feedback URL specified in TileJSON. ([#9078](https://github.com/mapbox/mapbox-gl-native/pull/9078)) - -### Other changes - -* Fixed a crash when calling `MLNMultiPolygon.coordinate` [#8713](https://github.com/mapbox/mapbox-gl-native/pull/8713) -* Fixed an issue causing attribution button text to appear blue instead of black. ([#8701](https://github.com/mapbox/mapbox-gl-native/pull/8701)) -* Fixed a crash or console spew when MLNMapView is initialized with a frame smaller than 64 points wide by 64 points tall. ([#8562](https://github.com/mapbox/mapbox-gl-native/pull/8562)) -* The error passed into `-[MLNMapViewDelegate mapViewDidFailLoadingMap:withError:]` now includes a more specific description and failure reason. ([#8418](https://github.com/mapbox/mapbox-gl-native/pull/8418)) -* Improved CPU and battery performance while animating a tilted map’s camera in an area with many labels. ([#9031](https://github.com/mapbox/mapbox-gl-native/pull/9031)) -* Fixed an issue rendering polylines that contain duplicate vertices. ([#8808](https://github.com/mapbox/mapbox-gl-native/pull/8808)) -* Added struct boxing to `MLNCoordinateSpan`, `MLNCoordinateBounds`, `MLNOfflinePackProgress`, and `MLNTransition`. ([#9343](https://github.com/mapbox/mapbox-gl-native/pull/9343)) - -## 0.4.1 - April 8, 2017 - -This version of the Mapbox macOS SDK corresponds to version 3.5.2 of the Mapbox iOS SDK. - -* Fixed an issue causing code signing failures and bloating the framework. ([#8640](https://github.com/mapbox/mapbox-gl-native/pull/8640)) -* Fixed an issue that could cause a crash if annotations unknown to the map view were interacted with. ([#8686](https://github.com/mapbox/mapbox-gl-native/pull/8686)) -* Renamed the “Data-Driven Styling” guide to “Using Style Functions at Runtime” and clarified the meaning of data-driven styling in the guide’s discussion of runtime style functions. ([#8627](https://github.com/mapbox/mapbox-gl-native/pull/8627)) - -## 0.4.0 - April 2, 2017 - -This version of the Mapbox macOS SDK corresponds to version 3.5.1 of the Mapbox iOS SDK. - -### Internationalization - -* Added support for right-to-left text and Arabic ligatures in labels. ([#6984](https://github.com/mapbox/mapbox-gl-native/pull/6984), [#7123](https://github.com/mapbox/mapbox-gl-native/pull/7123)) -* Improved the line wrapping behavior of point-placed labels, especially labels written in Chinese and Japanese. ([#6828](https://github.com/mapbox/mapbox-gl-native/pull/6828), [#7446](https://github.com/mapbox/mapbox-gl-native/pull/7446)) -* CJK characters now remain upright in vertically oriented labels that have line placement, such as road labels. ([#7114](https://github.com/mapbox/mapbox-gl-native/issues/7114)) -* Added Catalan, Chinese (Simplified and Traditional), Dutch, Finnish, French, German, Japanese, Lithuanian, Polish, Portuguese (Brazilian), Spanish, Swedish, Ukrainian, and Vietnamese localizations. ([#7316](https://github.com/mapbox/mapbox-gl-native/pull/7316), [#7503](https://github.com/mapbox/mapbox-gl-native/pull/7503), [#7899](https://github.com/mapbox/mapbox-gl-native/pull/7899), [#7999](https://github.com/mapbox/mapbox-gl-native/pull/7999), [#8113](https://github.com/mapbox/mapbox-gl-native/pull/8113), [#8256](https://github.com/mapbox/mapbox-gl-native/pull/8256)) - -### Styles - -* Added support for data-driven styling in the form of source and composite style functions. `MLNStyleFunction` is now an abstract class, with `MLNCameraStyleFunction` providing the behavior of `MLNStyleFunction` in previous releases. New `MLNStyleFunction` subclasses allow you to vary a style attribute by the values of attributes of features in the source. ([#7596](https://github.com/mapbox/mapbox-gl-native/pull/7596)) -* Added methods to MLNShapeSource and MLNVectorSource for querying features loaded by the source, whether or not they’re visible on the map. ([#8263](https://github.com/mapbox/mapbox-gl-native/pull/8263)) -* Added `circleStrokeColor`, `circleStrokeWidth`, and `circleStrokeOpacity` properties to MLNCircleStyleLayer and support for corresponding properties in style JSON files. ([#7356](https://github.com/mapbox/mapbox-gl-native/pull/7356)) -* Point-placed labels in symbol style layers are now placed at more optimal locations within polygons. ([#7465](https://github.com/mapbox/mapbox-gl-native/pull/7465)) -* Fixed flickering that occurred when manipulating a style layer. ([#7616](https://github.com/mapbox/mapbox-gl-native/pull/7616)) -* Symbol style layers can now render point collections (known as multipoints in GeoJSON). ([#7445](https://github.com/mapbox/mapbox-gl-native/pull/7445)) -* Added a `transition` property to MLNStyle to customize the timing of changes to style layers. ([#7711](https://github.com/mapbox/mapbox-gl-native/pull/7711)) -* Added properties to MLNStyleLayer subclasses to customize the timing of transitions between values of individual attributes. ([#8225](https://github.com/mapbox/mapbox-gl-native/pull/8225)) -* Fixed an issue causing lines and text labels toward the top of the map view to appear blurry when the map is tilted. ([#7444](https://github.com/mapbox/mapbox-gl-native/pull/7444)) -* Fixed incorrect interpolation of style functions in Boolean-typed style attributes. ([#7526](https://github.com/mapbox/mapbox-gl-native/pull/7526)) -* Removed support for the `ref` property in layers in style JSON files. ([#7586](https://github.com/mapbox/mapbox-gl-native/pull/7586)) -* Fixed an issue that collapsed consecutive newlines within text labels. ([#7446](https://github.com/mapbox/mapbox-gl-native/pull/7446)) -* Fixed artifacts when drawing particularly acute line joins. ([#7786](https://github.com/mapbox/mapbox-gl-native/pull/7786)) -* Fixed an issue in which a vector style layer predicate involving the `$id` key path would exclude all features from the layer. ([#7989](https://github.com/mapbox/mapbox-gl-native/pull/7989), [#7971](https://github.com/mapbox/mapbox-gl-native/pull/7971)) -* Fixed an issue causing vector style layer predicates to be evaluated as if each feature had a `$type` attribute of 1, 2, or 3. The `$type` key path can now be compared to `Point`, `LineString`, or `Polygon`, as described in the documentation. ([#7971](https://github.com/mapbox/mapbox-gl-native/pull/7971)) -* When setting an `MLNShapeSource`’s shape to an `MLNFeature` instance, any `NSColor` attribute value is now converted to the equivalent CSS string representation for use with `MLNInterpolationModeIdentity` in style functions. ([#8025](https://github.com/mapbox/mapbox-gl-native/pull/8025)) -* An exception is no longer thrown if layers or sources are removed from a style before they are added. ([#7962](https://github.com/mapbox/mapbox-gl-native/pull/7962)) -* Renamed MLNStyleConstantValue to MLNConstantStyleValue. For compatibility with previous releases, MLNStyleConstantValue is now an alias of MLNConstantStyleValue. ([#8090](https://github.com/mapbox/mapbox-gl-native/pull/8090)) -* Fixed a crash that could occur when switching styles after adding an MLNSource to the style. ([#8298](https://github.com/mapbox/mapbox-gl-native/pull/8298)) - -### Annotations and user interaction - -* Added a method to MLNMapViewDelegate, `-mapView:shouldChangeFromCamera:toCamera:`, that you can implement to restrict which parts the user can navigate to using gestures. ([#5584](https://github.com/mapbox/mapbox-gl-native/pull/5584)) -* When a map view is the first responder, pressing +, -, or = now zooms the map. ([#8033](https://github.com/mapbox/mapbox-gl-native/pull/8033)) -* Changing the coordinates of a point annotation no longer deselects the annotation. ([#8269](https://github.com/mapbox/mapbox-gl-native/pull/8269)) -* Fixed an issue that could cause a crash when point annotations were added and removed while simultaneously querying source features. ([#8374](https://github.com/mapbox/mapbox-gl-native/pull/8374)) -* Fixed an issue preventing MLNMapView from adding a polyline annotation with the same coordinates as a polygon annotation. ([#8355](https://github.com/mapbox/mapbox-gl-native/pull/8355)) -* Zooming by double-tap, two-finger tap, zoom buttons, shortcut keys, or demo app menu items or shortcut keys now zooms to the nearest integer zoom level. ([#8027](https://github.com/mapbox/mapbox-gl-native/pull/8027)) -* Fixed an issue where translucent point annotations along tile boundaries would be drawn darker than expected. ([#6832](https://github.com/mapbox/mapbox-gl-native/pull/6832)) - -### Networking and offline maps - -* Offline pack notifications are now posted by `MLNOfflinePack` instances instead of the shared `MLNOfflineStorage` object. For backwards compatibility, the `userInfo` dictionary still indicates the pack’s state and progress. ([#7952](https://github.com/mapbox/mapbox-gl-native/pull/7952)) -* Fixed a memory leak in MLNMapView. ([#7956](https://github.com/mapbox/mapbox-gl-native/pull/7956)) -* Fixed an issue that could prevent a cached style from appearing while the computer is offline. ([#7770](https://github.com/mapbox/mapbox-gl-native/pull/7770)) -* Fixed an issue that could prevent a style from loading when reestablishing a network connection. ([#7902](https://github.com/mapbox/mapbox-gl-native/pull/7902)) -* `MLNOfflineStorage` instances now support a delegate conforming to `MLNOfflineStorageDelegate`, which allows altering URLs before they are requested from the Internet. ([#8084](https://github.com/mapbox/mapbox-gl-native/pull/8084)) - -### Other changes - -* Added support for the Carthage dependency manager. See [this SDK’s homepage](https://mapbox.github.io/mapbox-gl-native/macos/) for setup instructions. ([#8257](https://github.com/mapbox/mapbox-gl-native/pull/8257)) -* Fixed an issue that, among other things, caused various islands to disappear at certain zoom levels. ([#7621](https://github.com/mapbox/mapbox-gl-native/pull/7621)) -* Added a method to MLNMapView that allows you to specify a predicate when querying for visible features. ([#8256](https://github.com/mapbox/mapbox-gl-native/pull/8246)) -* Fixed flickering that occurred when panning past the antimeridian. ([#7574](https://github.com/mapbox/mapbox-gl-native/pull/7574)) -* Added a `MLNDistanceFormatter` class for formatting geographic distances. ([#7888](https://github.com/mapbox/mapbox-gl-native/pull/7888)) - -## 0.3.1 - February 21, 2017 - -This version of the Mapbox macOS SDK corresponds to version 3.4.2 of the Mapbox iOS SDK. - -* Fixed an issue causing MLNMapView’s `camera`’s `heading` to be set to a negative value, indicating an undefined heading, when the map view faces northwest. The heading is now wrapped to between zero and 360 degrees, for consistency with MLNMapView’s `direction` property. ([#7724](https://github.com/mapbox/mapbox-gl-native/pull/7724)) -* Fixed a crash that occurred when moving a window containing an MLNMapView from one screen to another. ([#8004](https://github.com/mapbox/mapbox-gl-native/pull/8004)) -* Fixed an issue preventing the use of the integrated GPU on machines that have more than one GPU. Follow the instructions in [Technical Q&A 1734](https://developer.apple.com/library/content/qa/qa1734/_index.html) to enable integrated GPU usage in your application. ([#7834](https://github.com/mapbox/mapbox-gl-native/pull/7834)) -* Fixed an issue causing the mouse cursor to jump after shift- or option-dragging a map view if the window opened on a screen with a different size than the screen with keyboard focus. ([#7846](https://github.com/mapbox/mapbox-gl-native/pull/7846)) -* Deprecated the style class methods in MLNStyle. ([#7785](https://github.com/mapbox/mapbox-gl-native/pull/7785)) -* Improved the performance of trivial camera animations. ([#7125](https://github.com/mapbox/mapbox-gl-native/pull/7125)) - -## 0.3.0 - January 21, 2016 - -This version of the Mapbox macOS SDK corresponds to version 3.4.0 of the Mapbox iOS SDK. The two SDKs have very similar feature sets. The main differences are the lack of user location tracking and annotation views. Some APIs have been adapted to macOS conventions, particularly the use of NSPopover for callout views. - -### Packaging - -* Fixed an issue causing code signing failures and bloating the framework. ([#5850](https://github.com/mapbox/mapbox-gl-native/pull/5850)) -* Xcode 7.3 or higher is now required for using this SDK. ([#6059](https://github.com/mapbox/mapbox-gl-native/issues/6059)) -* Fixed an issue with symbols not being properly stripped from the dynamic framework when built with `make xpackage SYMBOLS=NO`. ([#6531](https://github.com/mapbox/mapbox-gl-native/pull/6531)) -* The API reference has a sharper look. ([#7422](https://github.com/mapbox/mapbox-gl-native/pull/7422)) -* Added documentation for the Info.plist keys used by this SDK. ([#6833](https://github.com/mapbox/mapbox-gl-native/pull/6833)) - -### Styles and data - -* A new runtime styling API allows you to adjust the style and content of the base map dynamically. All the options available in [Mapbox Studio](https://www.mapbox.com/studio/) are now exposed via MLNStyle and subclasses of MLNStyleLayer and MLNSource. ([#5727](https://github.com/mapbox/mapbox-gl-native/pull/5727)) -* MLNMapView’s `styleURL` property can now be set to an absolute file URL. ([#6026](https://github.com/mapbox/mapbox-gl-native/pull/6026)) -* When creating an MLNShapeSource, you can now specify options for clustering point features within the shape source. Similarly, GeoJSON sources specified by the stylesheet at design time can specify the `cluster`, `clusterMaxZoom`, and `clusterRadius` attributes. ([#5724](https://github.com/mapbox/mapbox-gl-native/pull/5724)) -* When creating an MLNTileSource, you can now specify that the tile URLs use [TMS](https://en.wikipedia.org/wiki/Tile_Map_Service) coordinates by setting `MLNTileSourceOptionTileCoordinateSystem` to `MLNTileCoordinateSystemTMS`. TileJSON files can specify `"scheme": "tms"`. ([#2270](https://github.com/mapbox/mapbox-gl-native/pull/2270)) -* Fixed an issue causing abstract `MLNMultiPointFeature` objects to be returned in feature query results. Now concrete `MLNPointCollectionFeature` objects are returned. MLNMultiPointFeature is now an alias of MLNPointCollectionFeature. ([#6742](https://github.com/mapbox/mapbox-gl-native/pull/6742)) -* Fixed rendering artifacts and missing glyphs that occurred after viewing a large number of CJK characters on the map. ([#5908](https://github.com/mapbox/mapbox-gl-native/pull/5908)) -* Fixed an issue where the style zoom levels were not respected when deciding when to render a layer. ([#5811](https://github.com/mapbox/mapbox-gl-native/issues/5811)) -* Fixed an issue where feature querying sometimes failed to return the expected features when the map was tilted. ([#6773](https://github.com/mapbox/mapbox-gl-native/pull/6773)) -* MLNFeature’s `attributes` and `identifier` properties are now writable. ([#6728](https://github.com/mapbox/mapbox-gl-native/pull/6728)) -* Attribution views now display the correct attribution for the current style. ([#5999](https://github.com/mapbox/mapbox-gl-native/pull/5999)) -* If MLNMapView is unable to obtain or parse a style, it now calls its delegate’s `-mapViewDidFailLoadingMap:withError:` method. ([#6145](https://github.com/mapbox/mapbox-gl-native/pull/6145)) -* Added the `-[MLNMapViewDelegate mapView:didFinishLoadingStyle:]` delegate method, which offers the earliest opportunity to modify the layout or appearance of the current style before the map view is displayed to the user. ([#6636](https://github.com/mapbox/mapbox-gl-native/pull/6636)) -* Fixed an issue causing stepwise zoom functions to be misinterpreted. ([#6328](https://github.com/mapbox/mapbox-gl-native/pull/6328)) -* A source’s tiles are no longer rendered when the map is outside the source’s supported zoom levels. ([#6345](https://github.com/mapbox/mapbox-gl-native/pull/6345)) -* Fixed crashes that could occur when loading a malformed stylesheet. ([#5736](https://github.com/mapbox/mapbox-gl-native/pull/5736)) -* Improved style parsing performance. ([#6170](https://github.com/mapbox/mapbox-gl-native/pull/6170)) -* Improved feature querying performance. ([#6514](https://github.com/mapbox/mapbox-gl-native/pull/6514)) -* Fixed an issue where shapes that cannot currently be visually represented as annotations were still shown on the map as point annotations. ([#6764](https://github.com/mapbox/mapbox-gl-native/issues/6764)) - -### Annotations - -* Added `showAnnotations:animated:` and `showAnnotations:edgePadding:animated:`, which moves the map viewport to show the specified annotations. ([#5749](https://github.com/mapbox/mapbox-gl-native/pull/5749)) -* Added new methods to MLNMultiPoint for changing the vertices along a polyline annotation or the exterior of a polygon annotation. ([#6565](https://github.com/mapbox/mapbox-gl-native/pull/6565)) -* Fixed an exception raised when adding a custom annotation model object to MLNMapView. ([#7746](https://github.com/mapbox/mapbox-gl-native/pull/7746)) -* Added new APIs to MLNMapView to query for visible annotations. ([#6061](https://github.com/mapbox/mapbox-gl-native/pull/6061)) -* Shape, feature, and annotation classes now conform to NSSecureCoding. ([#6559](https://github.com/mapbox/mapbox-gl-native/pull/6559)) -* Various method arguments that are represented as C arrays of `CLLocationCoordinate2D` instances have been marked `const` to streamline bridging to Swift. ([#7215](https://github.com/mapbox/mapbox-gl-native/pull/7215)) -* To make an MLNPolyline or MLNPolygon span the antimeridian, specify coordinates with longitudes greater than 180° or less than −180°. ([#6088](https://github.com/mapbox/mapbox-gl-native/pull/6088)) -* Fixed an issue where placing a point annotation on Null Island also placed a duplicate annotation on its antipode. ([#3563](https://github.com/mapbox/mapbox-gl-native/pull/3563)) -* Fixed an issue that caused an assertion failure if a `MLNShapeCollection` (a GeoJSON GeometryCollection) was created with an empty array of shapes. ([#7632](https://github.com/mapbox/mapbox-gl-native/pull/7632)) -* Improved the precision of annotations at zoom levels greater than 18. ([#5517](https://github.com/mapbox/mapbox-gl-native/pull/5517)) - -### Networking and offline maps - -* Fixed an issue preventing an MLNMapView from loading tiles while an offline pack is downloading. ([#6446](https://github.com/mapbox/mapbox-gl-native/pull/6446)) -* Fixed an issue causing an MLNOfflinePack’s progress to continue to update after calling `-suspend`. ([#6186](https://github.com/mapbox/mapbox-gl-native/pull/6186)) -* Fixed an issue preventing cached annotation images from displaying while the device is offline. ([#6358](https://github.com/mapbox/mapbox-gl-native/pull/6358)) -* Fixed a crash that could occur when the device is disconnected while downloading an offline pack. ([#6293](https://github.com/mapbox/mapbox-gl-native/pull/6293)) -* Fixed a crash that occurred when encountering a rate-limit error in response to a network request. ([#6223](https://github.com/mapbox/mapbox-gl-native/pull/6223)) -* Added support for an `MLNMapboxAPIBaseURL` key in an app's `Info.plist` in order to customize the base URL used for retrieving map data, styles, and other resources. ([#6709](https://github.com/mapbox/mapbox-gl-native/pull/6709)) -* Query parameters are no longer stripped from mapbox: URLs used as resource URLs. ([#6182](https://github.com/mapbox/mapbox-gl-native/pull/6182), [#6432](https://github.com/mapbox/mapbox-gl-native/pull/6432)) -* Database errors are now logged to the console. ([#6291](https://github.com/mapbox/mapbox-gl-native/pull/6291)) - -### Other changes - -* Raster tiles such as those from Mapbox Satellite are now cached, eliminating flashing while panning back and forth. ([#7091](https://github.com/mapbox/mapbox-gl-native/pull/7091)) -* Fixed an issue where the map view’s center would always be calculated as if the view occupied the entire window. ([#6102](https://github.com/mapbox/mapbox-gl-native/pull/6102)) -* Notification names and user info keys are now string enumeration values for ease of use in Swift. ([#6794](https://github.com/mapbox/mapbox-gl-native/pull/6794)) -* Fixed a typo in the documentation for the MLNCompassDirectionFormatter class. ([#5879](https://github.com/mapbox/mapbox-gl-native/pull/5879)) -* The NSClickGestureRecognizer on MLNMapView that is used for selecting annotations now fails if a click does not select an annotation. ([#7246](https://github.com/mapbox/mapbox-gl-native/pull/7246)) - -## 0.2.1 - July 19, 2016 - -* Fixed a crash that occurred when a sprite URL lacks a file extension. See [this comment](https://github.com/mapbox/mapbox-gl-native/issues/5722#issuecomment-233701251) to determine who may be affected by this bug. ([#5723](https://github.com/mapbox/mapbox-gl-native/pull/5723)) -* Right-clicking to open MLNMapView’s context menu no longer prevents the user from subsequently panning the map by clicking and dragging. ([#5593](https://github.com/mapbox/mapbox-gl-native/pull/5593)) -* Fixed an issue causing overlapping polylines and polygons to be drawn in undefined z-order. Shapes are always drawn in the order they are added to the map, from the oldest on the bottom to the newest on the top. ([#5710](https://github.com/mapbox/mapbox-gl-native/pull/5710)) -* Improved the design of the generated API documentation. ([#5306](https://github.com/mapbox/mapbox-gl-native/pull/5306)) -* As the user zooms in, tiles from lower zoom levels are scaled up until tiles for higher zoom levels are loaded. ([#5143](https://github.com/mapbox/mapbox-gl-native/pull/5143)) -* Per documentation, the first and last coordinates in an MLNPolygon must be identical in order for the polygon to draw correctly. The same is true for an MLNPolygon’s interior polygon. ([#5514](https://github.com/mapbox/mapbox-gl-native/pull/5514)) -* Added [quadkey](https://msdn.microsoft.com/en-us/library/bb259689.aspx) support and limited WMS support in raster tile URL templates. ([#5628](https://github.com/mapbox/mapbox-gl-native/pull/5628)) -* Fixed a crash that occurred when a style or other resource URL has a query string. ([#5554](https://github.com/mapbox/mapbox-gl-native/pull/5554)) -* Fixed an issue causing polyline and polygon annotations to disappear when the zoom level is one less than the maximum zoom level. ([#5418](https://github.com/mapbox/mapbox-gl-native/pull/5418)) -* Added a property to MLNOfflineStorage, `countOfBytesCompleted`, that indicates the disk space occupied by all cached and offline resources. ([#5585](https://github.com/mapbox/mapbox-gl-native/pull/5585)) -* The `text-pitch-alignment` property is now supported in stylesheets for improved street label legibility on a tilted map. ([#5288](https://github.com/mapbox/mapbox-gl-native/pull/5288)) -* The `icon-text-fit` and `icon-text-fit-padding` properties are now supported in stylesheets, allowing the background of a shield to automatically resize to fit the shield’s text. ([#5334](https://github.com/mapbox/mapbox-gl-native/pull/5334)) -* The `circle-pitch-scale` property is now supported in stylesheets, allowing circle features in a tilted base map to scale or remain the same size as the viewing distance changes. ([#5576](https://github.com/mapbox/mapbox-gl-native/pull/5576)) -* The `identifier` property of an MLNFeature may now be either a number or string. ([#5514](https://github.com/mapbox/mapbox-gl-native/pull/5514)) -* Improved the performance of relocating a point annotation by changing its `coordinate` property. ([#5385](https://github.com/mapbox/mapbox-gl-native/pull/5385)) -* Replaced the wireframe debug mask with an overdraw visualization debug mask to match Mapbox GL JS’s overdraw inspector. ([#5403](https://github.com/mapbox/mapbox-gl-native/pull/5403)) -* MLNMapDebugOverdrawVisualizationMask and MLNMapDebugStencilBufferMask no longer have any effect in Release builds of the SDK. These debug masks have been disabled for performance reasons. ([#5555](https://github.com/mapbox/mapbox-gl-native/pull/5555)) - -## 0.2.0 - June 14, 2016 - -* This version of the Mapbox macOS SDK roughly corresponds to version 3.3.0-beta.1 of the Mapbox iOS SDK. The two SDKs have very similar feature sets. The main differences are the lack of user location tracking and annotation views. Some APIs have been adapted to macOS conventions, particularly the use of NSPopover for callout views. -* Renamed the SDK to the Mapbox macOS SDK. -* Fixed an issue in which Mapbox.framework was nested inside another folder named Mapbox.framework. ([#4998](https://github.com/mapbox/mapbox-gl-native/pull/4998)) -* Added methods to MLNMapView for obtaining the underlying map data rendered by the current style, along with additional classes to represent complex geometry in that data. ([#5110](https://github.com/mapbox/mapbox-gl-native/pull/5110)) -* An MLNPolygon can now have interior polygons, representing holes knocked out of the overall shape. ([#5110](https://github.com/mapbox/mapbox-gl-native/pull/5110)) -* Fixed a vector tile parsing bug that sometimes caused properties in the vector tile source to be mismatched. ([#5183](https://github.com/mapbox/mapbox-gl-native/pull/5183)) -* Fixed a crash passing a mixture of point and shape annotations into `-[MLNMapView addAnnotations:]`. ([#5097](https://github.com/mapbox/mapbox-gl-native/pull/5097)) -* Fixed an issue (speculatively) where the tile cache could be included in iCloud backups. ([#5124](https://github.com/mapbox/mapbox-gl-native/pull/5124)) -* Improved performance viewing regions with large landcover polygons when viewing a style that uses the Mapbox Streets source. ([#2444](https://github.com/mapbox/mapbox-gl-native/pull/2444)) -* Fixed a memory leak when using raster resources. ([#5141](https://github.com/mapbox/mapbox-gl-native/pull/5141)) -* Added `MLNCoordinateInCoordinateBounds()`, a function that tests whether or not a coordinate is in a given bounds. ([#5053](https://github.com/mapbox/mapbox-gl-native/pull/5053)) -* Fixed an issue in which fade transitions (such as on street labels in some styles) lagged behind the map when quickly zooming in and out. ([#4579](https://github.com/mapbox/mapbox-gl-native/pull/4579)) -* Added new options to `MLNMapDebugMaskOptions` that show wireframes and the stencil buffer instead of the color buffer. ([#4359](https://github.com/mapbox/mapbox-gl-native/pull/4359)) -* Declarations in the API documentation are shown in both Objective-C and Swift. ([realm/jazzy#530](https://github.com/realm/jazzy/pull/530)) - -## 0.1.0 - May 10, 2016 - -* This version of the Mapbox OS X SDK roughly corresponds to version 3.3.0-alpha.2 of the Mapbox iOS SDK. The two SDKs have very similar feature sets. The main difference is the lack of user location tracking. Some APIs have been adapted to OS X conventions, particularly the use of NSPopover for callout views. diff --git a/platform/ios/platform/macos/DEVELOPING.md b/platform/ios/platform/macos/DEVELOPING.md deleted file mode 100644 index 64858e440..000000000 --- a/platform/ios/platform/macos/DEVELOPING.md +++ /dev/null @@ -1,140 +0,0 @@ -# Contributing to the Mapbox Maps SDK for macOS - -This document explains how to build the Mapbox Maps SDK for macOS from source. It is intended for advanced developers who wish to contribute to Mapbox GL and the Mapbox Maps SDK for iOS. - -## Requirements - -See the "Requirements" section in [INSTALL.md](INSTALL.md). - -## Building the SDK - -Build and package the SDK by using one of the following commands: - -* `make xproj` opens the macOS project in Xcode -* `make xpackage` builds a dynamic framework in the Debug configuration, including debug symbols. -* `make xdocument` generates API documentation using jazzy. - -You can customize the build output by passing the following arguments into the `make` invocation: - -* `BUILDTYPE=Release` will optimize for distribution. Defaults to `Debug`. -* `SYMBOLS=NO` strips the build output of any debug symbols, yielding much smaller binaries. Defaults to `YES`. - -An example command that creates a dynamic framework suitable for distribution: - -```bash -make xpackage BUILDTYPE=Release SYMBOLS=NO -``` - -The products of these build commands can be found in the `build/macos/pkg` folder at the base of the repository. - -## Contributing - -### Making any symbol public - -To add any Objective-C type, constant, or member to the macOS maps SDK’s public interface: - -1. Ensure that the symbol is pure Objective-C and does not rely on any language features specific to Objective-C++ or the C11 dialect of C – so no namespaced types or classes named with emoji! 🙃 Most projects that depend on this SDK are either written in pure Objective-C (GNU99 dialect) or Swift, which cannot yet bridge C++ types. -1. Name the symbol according to [Cocoa naming conventions](https://developer.apple.com/library/prerelease/content/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html#//apple_ref/doc/uid/10000146i). Use the `MLN` class prefix to avoid conflicts with client code. If the symbol has an analogue in MapKit, name the symbol according to MapKit. -1. Provide full documentation comments. We use [jazzy](https://github.com/realm/jazzy/) to produce the documentation found in the SDK distribution. We also recognize that many developers rely on Xcode’s Quick Help feature. jazzy supports Markdown formatting; however, Quick Help supports only [HeaderDoc](https://developer.apple.com/legacy/library/documentation/DeveloperTools/Conceptual/HeaderDoc/intro/intro.html) syntax and a subset of Doxygen syntax. For hyperlinks, use HTML syntax, which is recognized by both tools. - -### Making a type or constant public - -To add an Objective-C class, protocol, category, typedef, enumeration, or global constant to the macOS maps SDK’s public interface: - -1. _(Optional.)_ Add the macro `MLN_EXPORT` prior to the declaration for classes and global constants. To use this macro, include `MLNFoundation.h`. You can check whether all public symbols are exported correctly by running `make darwin-check-public-symbols`. -1. _(Optional.)_ Add the type or constant’s name to the relevant category in the `custom_categories` section of [the jazzy configuration file](./jazzy.yml). This is required for classes and protocols and also recommended for any other type that is strongly associated with a particular class or protocol. If you leave out this step, the symbol will appear in an “Other” section in the generated HTML documentation’s table of contents. -1. _(Optional.)_ If the symbol would also be publicly exposed in the iOS maps SDK, consult [the companion iOS document](../ios/DEVELOPING.md#making-a-type-or-constant-public) for further instructions. - -### Adding a source code file - -To add an Objective-C header or implementation file to the macOS maps SDK: - -1. Add the file to the “dynamic” target’s Headers or Compile Sources build phase, as appropriate. You can either use the Build Phases tab of the project editor or the Target Membership section of the File inspector. -1. Audit new headers for nullability. Typically, you will wrap a header with `NS_ASSUME_NONNULL_BEGIN` and `NS_ASSUME_NONNULL_END`. -1. _(Optional.)_ If it’s a public header, change its visibility from Project to Public and import it in [the macOS SDK’s umbrella header](./src/Mapbox.h). -1. _(Optional.)_ If the file would also be used by the iOS maps SDK, make sure it’s in [platform/darwin/src/](../darwin/src/), then consult [the companion iOS document](../ios/DEVELOPING.md#adding-a-source-code-file) for further instructions. -1. Run `scripts/generate-file-lists.js` to update the generated source file list for third party build systems. - -### Adding a resource - -To add a resource (such as an image, SSL certificate, property list, or strings table) to the macOS maps SDK: - -1. Add the header to the Copy Bundle Resources build phase of the “dynamic” target. You can either use the Build Phases tab of the project editor or the Target Membership section of the File inspector. -1. _(Optional.)_ If the resource would also be used by the iOS maps SDK, make sure it’s in [platform/darwin/resources/](../darwin/resources/), then consult [the companion iOS document](../ios/DEVELOPING.md#adding-a-resource) for further instructions. - -### Adding user-facing text - -To add or update text that the user may see in the macOS maps SDK: - -1. Make sure the implementation file imports [NSBundle+MLNAdditions.h](../darwin/src/NSBundle+MLNAdditions.h). -1. Use the `NSLocalizedStringWithDefaultValue()` macro: - * `key` is a unique identifier that won’t change if the user-facing text ever needs to change. - * `tbl` is `Foundation` in code shared between the iOS and macOS maps SDKs, or `nil` otherwise. - * `bundle` is `nil`; the redefined macro looks for the SDK bundle at runtime and ignores this argument. - * `val` is the English string. -1. _(Optional.)_ When dealing with a number followed by a pluralized word, do not split the string. Instead, use a format string and make `val` ambiguous, like `%d file(s)`. Then pluralize for English in the appropriate [.stringsdict file](https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPInternational/StringsdictFileFormat/StringsdictFileFormat.html). See [platform/darwin/resources/en.lproj/Foundation.stringsdict](../darwin/resources/en.lproj/Foundation.stringsdict) for an example. Localizers should do likewise for their languages. -1. Run `make genstrings` and commit any changes it makes to .strings files. The make rule also updates the iOS maps SDK’s strings tables. - -### Adding a localization - -Translations of all the Mapbox GL Native SDKs are managed [in Transifex](https://www.transifex.com/mapbox/mapbox-gl-native/). If your language already has a translation, feel free to complete or proofread it. Otherwise, please [request your language](https://www.transifex.com/mapbox/mapbox-gl-native/languages/). Note that we’re primarily interested in languages that macOS supports as system languages. - -Once you’ve finished translating the SDK into a new language in Transifex, perform these steps to make Xcode aware of the translation: - -1. In macos.xcworkspace, open the project editor for macos.xcodeproj. Using the project editor’s sidebar or tab bar dropdown, go to the “macos” project; under the Localizations section of the Info tab, click the + button to add your language to the project. -1. In the sheet that appears, select all the .strings and .stringsdict files but no .xib file. (Most of the XIBs are part of the macosapp example application, which is not localized, while MLNAnnotationCallout.xib contains no localizable strings.) If your language lacks declension and pluralization, as in the case of Chinese, omit the .stringsdict files. -1. In the Project navigator, expand each .stringsdict file in the project. An additional version for your localization should be listed; translate it. See Apple’s documentation on the [.stringsdict format](https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPInternational/StringsdictFileFormat/StringsdictFileFormat.html). -1. In the Project navigator, select Demo App/Localizable.strings and then, in the File Inspector, check the box for your new localization. -1. Repeat the steps above in ios.xcworkspace. - -The .strings files should still be in the original English – that’s expected. Now you can pull your translations into this repository: - -1. _(First time only.)_ Download the [`tx` command line tool](https://docs.transifex.com/client/installing-the-client) and [configure your .transifexrc](https://docs.transifex.com/client/client-configuration). -1. Run `tx pull -a`. -1. Convert any added .strings files from UTF-16 encoding to UTF-8 encoding to facilitate diffing and merging. You can convert the file encoding using Xcode’s File inspector or the following command (substituting _MYLANG_ for the locale code): - -``` -find platform/{darwin,ios}/resources platform/macos/sdk -path '*/MYLANG.lproj/*.strings' -exec textutil -convert txt -extension strings -inputencoding UTF-16 -encoding UTF-8 {} -output {} \; -``` - -### Adding a code example - -To add an example code listing to the documentation for a class or class member: - -1. Add a test method named in the form `testMLNClass` or `testMLNClass$method` - to [MLNDocumentationExampleTests](test/MLNDocumentationExampleTests.swift). - Wrap the code you’d like to appear in the documentation within - `//#-example-code` and `//#-end-example-code` comments. -1. If the header doesn’t already have an example code listing, add the path to - the header to platform/darwin/scripts/update-examples.list. -1. Insert the code listings into the headers: - -```bash -make darwin-update-examples -``` - -[SourceKitten](https://github.com/jpsim/SourceKitten/) is required and will be installed automatically using Homebrew. - -### Customizing compilation settings - -You can provide an optional and custom [`xcconfig`](https://help.apple.com/xcode/mac/current/#/dev745c5c974) file named `platform/darwin/developer.xcconfig` to set custom build options. This file is ignored by git. These custom settings apply to all configurations (`Debug`, `Release`), but do **not** apply to the core `mbgl` files. This mechanism allows you to try different compiler settings (for example when testing an Xcode beta). - -## Testing - -`make macos-test` builds and runs unit tests of cross-platform code as well as the SDK. - -To instead run the cross-platform tests in Xcode instead of on the command line: - -1. Run `make xproj` to set up the workspace. -1. Change the scheme to “mbgl-test” and press Command-R to run core unit tests. -1. Change the scheme to “CI” and press Command-U to run SDK integration tests. - -## Access tokens - -The demo applications use Mapbox vector tiles, which require a Mapbox account and API access token. Obtain an access token on the [Mapbox account page](https://www.mapbox.com/studio/account/tokens/). You will be prompted for this access token the first time you launch the demo application. - -## Using macosapp - -Through the macOS maps SDK, the demo application supports a variety of standard gestures and keyboard shortcuts. For more details, open Mapbox GL Help from the Help menu. - -You can also [integrate the Mapbox Maps SDK for macOS into your own Cocoa application](INSTALL.md). diff --git a/platform/ios/platform/macos/INSTALL.md b/platform/ios/platform/macos/INSTALL.md deleted file mode 100644 index c2e56bce4..000000000 --- a/platform/ios/platform/macos/INSTALL.md +++ /dev/null @@ -1,104 +0,0 @@ -# Integrating a custom build of the Mapbox Maps SDK for macOS into your application - -This document explains how to build a development version of the Mapbox Maps SDK for macOS from source and integrate it into your own Cocoa application. This process is for advanced developers who want to get a glimpse of the SDK’s development between releases. To use a production-ready version of the SDK, see the [Mapbox Maps SDK for macOS homepage](https://mapbox.github.io/mapbox-gl-native/macos/). - -### Requirements - -The Mapbox Maps SDK for macOS requires the macOS 10.11.0 SDK (or above) and Xcode 9.0 (or above). To use this SDK with Xcode 7.3.1, download and use a symbols build from the [releases](https://github.com/mapbox/mapbox-gl-native-ios/releases) page. - -Before building, follow these steps to install prerequisites: - -1. Install [Xcode](https://developer.apple.com/xcode/) -1. Launch Xcode and install any updates -1. Install [Homebrew](http://brew.sh) -1. Install [Node.js](https://nodejs.org/), [CMake](https://cmake.org/), [ccache](https://ccache.samba.org), and [pkg-config](https://formulae.brew.sh/formula/pkg-config-wrapper#default), [glfw](https://formulae.brew.sh/formula/glfw): - - ```bash - brew list node || brew install node - brew list cmake || brew install cmake - brew list ccache || brew install ccache - brew list pkg-config || brew install pkg-config - brew list glfw || brew install glfw - - # To install the CMake documentation - brew list cmake-docs || brew install cmake-docs - ``` -1. Install [xcpretty](https://github.com/supermarin/xcpretty) (optional, used for prettifying command line builds): - ``` - [sudo] gem install xcpretty - ``` -1. Install [jazzy](https://github.com/realm/jazzy) for generating API documentation: - ``` - [sudo] gem install jazzy - ``` - -### Building the SDK from source - -To build the SDK from source: - -1. Clone the git repository: - ```bash - git clone https://github.com/maplibre/maplibre-native.git - cd maplibre-native - ``` - Note that this repository uses Git submodules. They'll be automatically checked out when you first run a `make` command, - but are not updated automatically. We recommended that you run `git submodule update` after pulling down new commits to - this repository. -1. Run: - ``` - make xpackage - ``` - This produces a `Mapbox.framework` in the `build/macos/pkg/` folder. - -### Installation - -1. Open the project editor, select your application target, then go to the General tab. Drag Mapbox.framework into the “Embedded Binaries” section. (Don’t drag it into the “Linked Frameworks and Libraries” section; Xcode will add it there automatically.) In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish. - -1. Some vector tiles servers require a API key. In the project editor, select the application target, then go to the Info tab. Under the “Custom macOS Application Target Properties”” section, set `MLNApiKey` to your api key. - -## Usage - -In a storyboard or XIB: - -1. Add a view to your view controller or window. (Drag Custom View from the Object library to the View Controller scene on the Interface Builder canvas. In a XIB, drag it instead to the window on the canvas.) -2. In the Identity inspector, set the view’s custom class to `MLNMapView`. -3. MLNMapView needs to be layer-backed: - * You can make the window layer-backed by selecting the window and checking Full Size Content View in the Attributes inspector. This allows the map view to underlap the title bar and toolbar. - * Alternatively, if you don’t want the entire window to be layer-backed, you can make just the map view layer-backed by selecting it and checking its entry under the View Effects inspector’s Core Animation Layer section. -4. Add a map feedback item to your Help menu. (Drag Menu Item from the Object library into Main Menu ‣ Help ‣ Menu.) Title it “Improve This Map” or similar, and connect it to the `giveFeedback:` action of First Responder. - -If you need to manipulate the map view programmatically: - -1. Switch to the Assistant Editor. -1. Import the `Mapbox` module. -1. Connect the map view to a new outlet in your view controller class. (Control-drag from the map view in Interface Builder to a valid location in your view controller implementation.) The resulting outlet declaration should look something like this: - -```objc -// ViewController.m -@import Mapbox; - -@interface ViewController : NSViewController - -@property (strong) IBOutlet MLNMapView *mapView; - -@end -``` - -```swift -// ViewController.swift -import Mapbox - -class ViewController: NSViewController { - @IBOutlet var mapView: MLNMapView! -} -``` - -```applescript --- AppDelegate.applescript -script AppDelegate - property parent : class "NSObject" - property theMapView : missing value -end script -``` - -For further instructions, consult the [macOS SDK documentation](https://mapbox.github.io/mapbox-gl-native/macos/) or run `make xdocument` to generate the documentation. The [Mapbox Maps SDK for iOS](https://www.mapbox.com/ios-sdk/)’s [API documentation](https://www.mapbox.com/ios-sdk/) and [online examples](https://www.mapbox.com/ios-sdk/examples/) apply to the Mapbox Maps SDK for macOS with few differences, mostly around unimplemented features like user location tracking. diff --git a/platform/ios/platform/macos/README.md b/platform/ios/platform/macos/README.md deleted file mode 100644 index c9a38a461..000000000 --- a/platform/ios/platform/macos/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# MapLibre Native for macOS - -> **Note** -> https://github.com/maplibre/maplibre-native/pull/995 introduced OpenGL ES 3.0 shaders which are not supported by macOS without workarounds. That means that while the [Metal backend implementation](https://github.com/maplibre/maplibre-native/blob/main/design-proposals/2022-11-29-metal-port.md) is underway, builds from the `main` branch will not work on macOS. Use the `opengl-2` branch in the meantime. - -[![GitHub Action build status](https://github.com/maplibre/maplibre-native/workflows/macos-ci/badge.svg)](https://github.com/maplibre/maplibre-native/actions/workflows/macos-ci.yml) [![GitHub Action build status](https://github.com/maplibre/maplibre-native/workflows/macos-release/badge.svg)](https://github.com/maplibre/maplibre-native/actions/workflows/macos-release.yml) - -Put interactive, scalable world maps into your native Cocoa application with MapLibre Native for macOS. - -* High-performance OpenGL rendering and multitouch gestures keep your users happy. -* A well-designed, fully documented API helps you stay productive. -* Develop across [multiple platforms](../../README.md), including [iOS](../ios/README.md), using the same styles and similar APIs. - -![](docs/img/screenshot.jpg) - -MapLibre Native for macOS is compatible with macOS 10.10.0 and above for Cocoa applications developed in Objective-C, Swift, Interface Builder, or AppleScript. For hybrid applications, consider [MapLibre GL JS]([https://github.com/mapbox/mapbox-gl-js/](https://github.com/maplibre/maplibre-gl-js)). - -## Contributing - -* [Build the MapLibre Native for macOS from source](INSTALL.md) -* [Contribute to MapLibre Native for macOS](CONTRIBUTING.md) -* [MapLibre Style Spec](https://maplibre.org/maplibre-style-spec/) -* [Mapbox Vector Tile Specification](https://www.mapbox.com/developers/vector-tiles/) - -The MapLibre Organization does not officially support the macOS to the same extent as iOS (see [project tiers](https://github.com/maplibre/maplibre/blob/main/PROJECT_TIERS.md)); however, bug reports and pull requests are certainly welcome. diff --git a/platform/ios/platform/macos/config.cmake b/platform/ios/platform/macos/config.cmake deleted file mode 100644 index 28c361063..000000000 --- a/platform/ios/platform/macos/config.cmake +++ /dev/null @@ -1,132 +0,0 @@ -include(cmake/loop-darwin.cmake) - -macro(mbgl_platform_core) - target_sources_from_file(mbgl-core PRIVATE platform/macos/core-files.json) - - if(WITH_EGL) - target_sources(mbgl-core - PRIVATE platform/linux/src/headless_backend_egl.cpp - ) - target_add_mason_package(mbgl-core PUBLIC swiftshader) - else() - target_sources(mbgl-core - PRIVATE platform/darwin/src/headless_backend_cgl.mm - ) - target_link_libraries(mbgl-core - PUBLIC "-framework OpenGL" - ) - endif() - - target_compile_options(mbgl-core - PRIVATE -fobjc-arc - ) - - target_include_directories(mbgl-core - PUBLIC platform/darwin/include - PUBLIC platform/default/include - ) - - target_link_libraries(mbgl-core - PUBLIC "-lz" - PUBLIC "-framework Foundation" - PUBLIC "-framework CoreText" - PUBLIC "-framework CoreGraphics" - PUBLIC "-framework ImageIO" - PUBLIC "-framework CoreServices" - PUBLIC "-framework SystemConfiguration" - ) -endmacro() - - -macro(mbgl_filesource) - # Modify platform/darwin/filesource-files.json to change the source files for this target. - target_sources_from_file(mbgl-filesource PRIVATE platform/darwin/filesource-files.json) - - target_compile_options(mbgl-filesource - PRIVATE -fobjc-arc - ) - - target_link_libraries(mbgl-filesource - PUBLIC "-lsqlite3" - PUBLIC "-framework Foundation" - ) -endmacro() - - -macro(mbgl_platform_glfw) - target_link_libraries(mbgl-glfw - PRIVATE mbgl-filesource - PRIVATE mbgl-loop-darwin - ) -endmacro() - - -macro(mbgl_platform_render) - target_link_libraries(mbgl-render - PRIVATE mbgl-filesource - PRIVATE mbgl-loop-darwin - ) -endmacro() - - -macro(mbgl_platform_offline) - target_sources(mbgl-offline - PRIVATE platform/default/src/mbgl/layermanager/layer_manager.cpp - ) - - target_link_libraries(mbgl-offline - PRIVATE mbgl-filesource - PRIVATE mbgl-loop-darwin - ) -endmacro() - - -macro(mbgl_platform_test) - target_sources(mbgl-test - PRIVATE platform/default/src/mbgl/layermanager/layer_manager.cpp - PRIVATE platform/default/src/mbgl/test/main.cpp - ) - - target_include_directories(mbgl-test - PRIVATE platform/macos - ) - - set_source_files_properties( - platform/default/src/mbgl/test/main.cpp - PROPERTIES - COMPILE_FLAGS -DWORK_DIRECTORY="${CMAKE_SOURCE_DIR}" - ) - - target_link_libraries(mbgl-test - PRIVATE mbgl-filesource - PRIVATE mbgl-loop-darwin - ) -endmacro() - -macro(mbgl_platform_benchmark) - target_sources(mbgl-benchmark - PRIVATE platform/default/src/mbgl/layermanager/layer_manager.cpp - PRIVATE platform/default/src/mbgl/benchmark/main.cpp - ) - - set_source_files_properties( - platform/default/src/mbgl/benchmark/main.cpp - PROPERTIES - COMPILE_FLAGS -DWORK_DIRECTORY="${CMAKE_SOURCE_DIR}" - ) - - target_link_libraries(mbgl-benchmark - PRIVATE mbgl-filesource - PRIVATE mbgl-loop-darwin - ) -endmacro() - -macro(mbgl_platform_node) - target_sources(mbgl-core - PRIVATE platform/default/src/mbgl/layermanager/layer_manager.cpp - ) - target_link_libraries(mbgl-node INTERFACE - -exported_symbols_list ${CMAKE_SOURCE_DIR}/platform/node/symbol-list - -dead_strip - ) -endmacro() diff --git a/platform/ios/platform/macos/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/platform/ios/platform/macos/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/platform/ios/platform/macos/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/platform/ios/platform/macos/ninja b/platform/ios/platform/macos/ninja deleted file mode 100755 index 64fcacc550c7ef470414b11a746f656d8ee75a0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171356 zcmeFa33yaR_VC>yiNv+z9#^8GlZZ>AMu`!nB@MTwTjL;#N({;(jEYFQ0mVSD)0*p@ zE6j|H%(yX*&M>3S-~!?TB!Ee9!H9|oj(`hPY?Va~5tROZr|#{fo5lb9-~ao5@AG}n zG9Nd^LRX7enyVR6Z2&7=J6aOVSZIr6}|!f z>-@jGLSobZoSf-#yN3kMBr2$?y2?M~s`OM{ew@^v^5=%Z&6CYfp7K{!6&^V$?7TbS zba;IaqcJ4(e#5~^!dYF}B~Y6htg5OGM{cU_jM^Q)Ngrouc=x#ICBw-AIWD~Y+z1C= z)##D8jvG0ixZUCX_=yAWVize1r?q?!{D$8?wz{jqyTj}InFH^P6CDI3oYvkXqMi5+ zuMUqNGxp}ra60|QWpvZ+?a{-@AmLPaX}FT5swy&e;+U}`s>X~Rb-NCy!<&)sz?*TX z15d)c!*EiZ|5a5ZM^}v+f8%WN{_{>GoTz#)Zf4f!{b6UT1Un0xun(TW|b1c(pFP zAudu9PQ_2?Hz5tb+in*o856D=6&X8x5ByeFJN<#^(SH(7g_rDyB*?0&-N!|G|E_o8 zb+|wzoXW>ZILT*K)rcFzHzq@S_Q&dp4t`1cNjMe1u9D7MRn<+^T~cLFc*=#>kWw%e zo+G`w5~aPj-FExfWX$gTHwWP=Wxh&g;Q4d#y5xE=aQQ%gdEhFyV66jZ=m}k6c}s?+ zUsG{A+2g4#ap87ZGcilW2QX|~=LwM%%JBZ)ek?Qeh-#X@|vq#){>j=W~cN{;# z!5~r_c5EEVg zY7H}{h%~J1yDGbR46Ao>`zw<7WwGGZ@2NIm?MJ4$fL6E9&+tS$GOG_UW*PRuzSazn zl{GD%8Exoh>PiedJNQioEsQmg-LOx1lTgs=^9w)+?K2I08qKlSNRq0H8{*lcW(2J6 zWN#rZeuRU%*uSIB^7g2cOdfx6L%F#rXto>X8tSYZ*3F~t##a^X818-GpEN$&@JO`d zaPNKZ3n7M=$2`Fdl~^CJE->szJEUdiI>R2^s*YSPi1A+XDoCkCEg7CzgSXC0bx!o( zB>Jyz^zoh1vm|`P*-COr7$`-GcGJVe0VBb(D{x!qXb`$Xq*@Vh%Yseh1 zE_sFd7jWnG{fUmsheEXOf%|Yz8kQ|__wQe~+#8!fgwt1TPwb_f5+XVIYfC-e*kH29 z8eUE$5>vgGH=3G%+Qv8qlXd+=mx)OofwJ!2y0a;>&3mY3tF}Jmb@(u&t(fnLoa&r0RXGr3+y0s@9NQ%&VbCXl% zZxU_Q%yntK?psM-qpqGSPlvjZx!$_R$>uL^*R)-w^Sq&!JOynZ(qQ}C+d+ks>BHi+ zZQnXk!+#)ZG*Og`S1*=%qB==XYVND&zdW@s#%Lx*dg9aS}L znH$S3J@y%K*TysGwL&IQfWaOD{0qxHlF?Ri6B_m`yuz-sOd;1_MkHO$y7QUmsY zJYHw>8Zv+4ZH^SN7D`0h#|++7dRVp~n`n&wFv5lEeP983+J1+VC$;yy(@!G?(n_zW z1DC<9NA8iOPf8ZGlq_dRgr#vYOn>Vr?==mhyoE4Qv%f*8Z`ccE;FeqSM0b=UX04gJ z-F9eh(Dt{gw@&eR>KJctlG$&5M{8HoTJQWK#A}6gg1Jt0v`Qs2D*yyMhif!}4BH+? zo}e9@#Uo&Tr0hYGmHJEl3v~B~FE*_6R(BRdQ17@#YK(XdE7EF2rzrUBUxI03sV-=R z78r$%M&l2eM(La5mlU^CRuEC+1&dCZulfxUFn)7m_*(jWrbv*#L$u=MZBGd_fa}q} zb`uHBe{#9U?X0$$WJxFf0MucU_zx_Bvgb>LNT*1v+78Oa%RxHS3HLP_w!e@HSH66> zRA|?Bf_KeaBbEqf zt3L=3%MZ{=Dp**60v=V{t1~={ML(!N!4%fKNzzl+%+d1b zHFKCe8o$ik<~_ZM-y7S!H#E-8fM~xEWQPkIJr0yqdQAOok{0(gGREt=#xeSEfxekO(ts-DXF(n8Ynq9QDLP(e=Xl_@>-=#&5j3bE^?lBh*;Qh^i(zXkUw>J6A52OX2co+(Mn zxIo0j!u7f@9$l?bTZfu%&=E6Rd8qjf!dsL>8yU8v*D5IIt6xTwbs49lys>t0^4EPH z9zjCAfQU6vvkb%V9nnd-8IfBI%g8gVN%=;`y7tD5aE^hIWCb%4&M0;J*%_#bcOjE- z$*Ura+OQKuyma*kXbRq%!8U(Rf3AIu{=|;+jPmvnr+ zle$|Zc?ikwU`rA=6P~PV2v20h%{8p66(kgyEZC2pEH>4$Q0((?r7M?^tx^vhru!#V zECp>_%a3iBd+6ouLB^fif8!8VRB@v4<#+m>x9|~S0GufQPL+T8^3Tg~5HhQ;$>ytX zN)Fi@t`urHdYeJ&js0~eJ%!{Dy&WkBIn7kjyO45qSM6~7=`z+NUG`FEJerZFFLXC+ zP3QJIouOeQxvS*|A!7E>Yr2MxN3Cr8%t4kiNJ3EdDgZ^U4U?08=^Lr0#vh6`*ZB$rH3o{&h7Lzp0H;O7DBb z+fPY#3>$UI1R8B;j}W{aT`Ij2h&JcB0w8EVtCb1*dcd7sGN3uuN~g48=wQs2_4*dZh=dMD|Tl%%kmG{H%FCMD@wH)({EG(RQjVmIlRPSVPhq*L6a zzE0Anl%yOt=`1J7BLl^4{MSrdg)TC4!^-g%I_jobYZl$P_6bv|t+*XoAU%w6dBmt0 zMs#Tb-KCY0HBXx`rCY+s7}kM?$vj*qIB7g)CsOtJZ zOFy|2Iq4Q}Y>P8)>S;)EgZkq`Jl3`i`W_V4wgq`Grs7{Anh&6BgZ8OKy1^x}_0qT_ z z8DJdJIsPhrI$qPsFyByrohbzB^X|WdKS29kL~n=+AE|KM6nWK9lLm=SmcjyubfVBJmP=lKh?S zUy6QJ5HNoX*{}7?gNFn5BR%Uy(Ap(Em9T20!LSD}5cT-dOA@}V1qq0P4Vv53d(4A_ zCZhctbvKD9(-Gx8b89DMQAlR} zfoaQf^?=fbLeSi$`U`x!dnDbvNqtTR3XP^5QjG-3-s%P?NKjkDszx$)_4E!yy8lY4%knR9yZ;LvIaEhxuO@&E zz$Dr~H()=WFR^qEsEXG}72c)$^Ez$$$pkTc3S;E3HF|Iz^gCS{CSe68A&#K-;^pda zFu>pnU+RDf37DX{L-nY}TAQE2#O+26%pbp*vMQ0pxgTz#5QC z5n;#38M}d7e}^E3A45!1yU(vWi{6|>%Hj2n0f?ECXgy8R%)dz@3LRc45?;{;K`JLq zeV4jct0P_nho-ay5C-2j*z#9XK(!S zBVGRjbB9iTSx$j~Ri}l5!!VNr_KP|gv}@p)gnFJV6g!t-Q2yf!e8z>pOIHsk)a7-wjV_wjaLmZCz3xOoZh_sUEfPGa@tU2Kud>Np0DE2Sr z{MG4vv*tt1H}B8b3*W4L-r<`*4w%6j%w>NShZ+4mG}+HsA@TkxJo7suL}jbne?v-1 zz(Rh#;IK?VDx@uVB7k#*3n!c`)|+B9A0E=&vD^=LC} zKIM3GDpO2-gM_*2ZAn<1n&6%OrzAJbC9&;ydvMF|lj$=gyFh|kv9upPiGWa_;QN|G z&d2fKTO>UL+Y_(HLF1*c{qcr{#LynFhyICvHATM;xqdGaa}}&UOMUteSpCf|d^+Wu zUO$6I*f$QDI(?$Cc3g&5_AjZmQ<3L&mlQ*m1x8t< zA$+h9(%jF8`WNKHkJWN=jd~m=(dxddeL~0)m}%T=F(wvg4S&)M>@{* z&j^&h?yc)X-NrQkELW6X&l;Cu_Z8(^&mj9`l?dsQ&v*4 z_5`X4d9PR&TO0D0FVoq}h*F zETeSk-Rm5`=iemO^3QfVYXWo2aA|5sO=a>R_TMvfQhtg&ago%hJn{jk3<6Rh`g%^V z?6w)+*w@Ix;~}T$PPBAwN!G}rwn$GcXds>Izx{}s7|oh_JAD9Y7_nRf z+ngjAE$y6tYW}@iR(@wd^gRdoBdkTbT-(w)z`L`qAuRiz=Eayu6UMUukZ~<0y*z83 zXKWJ5?yKa~ucp6N7~+3PLf8vOi}+e{fDom!Rfd1~1Sa7Uo8=Oo{XtJ$9yc0QSw-~L zJqkIr#AYx-(IX|#P2@4Gez}G?$ILg3!X>g;5L-E=+F$(njO1F(@Ie(u;k(B0K|#Y@ zVHBR%8)(A%R{bE+^=>C*53JUBt?#)4qkjYZ)vyX0fQ z%IfLLip}aisV=$<0g@Rk8&(wgRD*ggwZG}7JD6F}Psf8d+;*xKxSi{n!h4!lzkM6D zrrftD?;UWFSg+?HC}L~1)niy8y5w*o;)m0o8IH{8M^Ps^y3E*3yQj#bz38v^&2M4A zdLKS=R_oV#ACNN!0qeY;OweZ|hG&UbJZg@Nqmmn`OoEI5D&8_t`6YvhVua0BPwO~u zT}(4si7y%dJ2&3aOjHBNl4Et+k$L)Y@Xdb7X9eKxqyH0vd3)}S0}WQ5cQt#RWFtM4SnW^JIf$y+B>XXZL5-ktf6 zR1&f-mi-m1pjp=_!|Jb$(j~{NHA-6z@1?D}kGz+zR>wk7#+H9I%gPsrtlJAhWw#fF z&(rLY%5M<}zDZq$tP-`sZkk}(=pwOy5T{8rqD|q0#Z~? zVBOs_N3H)0deCfcb0*4NZGpH>_v;27iSU78-+xC_J)K_z)**&POPK-n$NX1jb9TqcZ$01 zqPJm9&R30)NtkHhQ}SFIEZwQ?O`HuibJUk8L#mnKngX}DjWA*KXm!2_K@KaN@i%-07ah*VBRO&klKK1+8IP1O!T#dFx&v znUUt|kAQU$`r%4=_R2hO9ij?}>cfHP@kH|4CKB9Zd`te)f!2Au)UTe<5+QbsKx}_K zBXYoE7JEGE464;SBK#IQ;xLUw<=nW}+oP|?yQo7QBr%Dl-uao)j+4VV>lL~It6^O3vi{=M-UKhSYe-8d7DexVcZ})jwARbGCRrzEf(d;W-=Z!5D z{dZC-D^8uJO`D=W!G_f^rL#V5i3QbnlBj9vuGsaI6Ru!njTW#UKy*>d>Uqi`QVtj7 zwAXyy8=CCq3bkpfJNB5ZgmZ*-t|zk|SE;I2`a}2~Q^wq>wy8vdS@CJkG!$v_+?P7y z$j*q?uRwBsLv%|9f9z|&_wsKTQ@p(@d^qL!RQNvcqD$19v?j5%yfl9I7T^5? zG9a<+eEA~s1pNu!Qml#H{4MzRL+0y-`KDO0IEI<}vQ^Ie0B#KYARA?3k4<@*b>0?; z7Bs(9+6gDqevF4PhE>gEzB)I2fS#H5%gKo!gxJO8SfH|yYk@>lsC47qug%SfU!oUs z?U86yRPc+mc;}a&$X>e}#DO?L83`tpH7&&})iDv0`8)f|pQ18e%Z6OW7mKadvtvdjt6DiS#Cl;xF<`Ko+@WA@9 z?EJO-7{f9@8K+Q|=)cNY(y$4Fqh0d(>-dO~^}-FRw~nJtyr086hS_X)9ihs}{%grj z?b@u`U$W>;8|o-Yc6F!TYtf-mq-sZz-%})tK2us@mke1dRYRxwk2uT5VlEPY@Dexv zF*p830b)m3*h(l5B*EoTyjD9sDjo3Bx_WIcb~X+_$U5~0008i+)W%&eal-Pu)YZIV z=* zSQ9gATu47}39XkwqPG4Kh##a@<(=LxTPdWv_epG1gwoUF$@CW`{a<^epW~QFt?EHZ z?@1`V{CISdh98#n5js?Iq3G!oHVFIl`5Lyu27DX?;=dUGdFFdehFTE;A?s{r6gkdj zWoX%I_f44ox9olyO!YDEe}aWa&A>V_Kbex(=^t_y;Qs*ueTfy3t*-kD4ayw9A?(wt zoXIvg&7-`EIUU!^{@d^wPUcB@`0aD8$XgaGgO#*3et3#LGw7b1C?sBW`3%5o+V$Z~5I7(AQG1yk8RNWyqYXzbE2(*DY}uZVT#KN5z9 z;tF9dJO#sqIpl*4tb{m!o%F&6`8Htg68YOJg`VhKl+||iK2#4{lXIoP4*(sJ#9Sz{ z-qH7Z{ZQLaNqAbnR0P<5Z|;(faaSRu$Ms^h1IosaO>4**B60ry5bZd56!Ph_WR;>H zgVu1&L6iW*l3k~GxYnsdbp4-4-rLRCNZM1K=T)eGd%*lD#7?-n2F7~Gx*%lToD(Yi zPO53#nHjKZMD^zyg&js?2RnS1PUtVAzESn@#%5DOrqWM?8e$j`gw~d2p5IfylyuC8 zT9QL1aO|vg0n?w07RrfVCjW&|0@mOhqi}~|wn_zZuB3Ezb-udR0YR2sfnIpHqZ>N{ z)-^eS%nOXdZE^B_s?H~i3`3*wv&=wdB@&a4K%b@ASL&_b>mlChA4;RYYoo{ju=-&- z^~;6%Eu%xW8d;Nb3>#mzNrH8(VPDe`EaXH`s}Wt_VHDEZcJ-oe_=#G?W3aUvy4&cL z9!4(~2k^`7$fQ->jMz$Nk{tB=ub;dyZ?lZt~P!0%o=5ANHu7LTvfC!ZO^Q#XJ zlz#GDMz}kjk?;L&V}0nu_%X#RpiwlHmy;4A!{(SHJnh*8X zoHapnt7?A`_=y1p&u8q(9I4|$<{1C(`2Ghl|E=-u@Yi;OJqjXNZ(@$#8nS*No-c8% zDW)H|fCJWqe7$3~^gaJE38Qq4;qCXH-+Sp#y3c7`tf5>O$L`PAxjfGwOBh~*Zp{E@ zWHCVw@h}5xxwA(+CrH;wEn*V~%O>W9%SAZ7{X5N9;nU{I##L34e1{g=COPU?OI@yA2c5FP%3$T)in z4A_o|8@Uj96E1NWSiAICq5>_)t+yPr*TtvY+i!y^*Z9!>^}fchdN>_^A=MZ0?E!^`Y+`cm-pNP`po3mgk2b;7m#_-8-W`=Z=qSkz*3G9`hx>94}o!P52K z=nKTrik5)+eV|tlfw#R?=Dqioq6>qipAi%AUb@W4SZy>nGxX`3e#noS2K69V>E6A7 z!Mq@7-qso@{GQ&Bxz=6a7s~h^8ZaR!Vw08#v|Dr}n@+13&8W}9Z}sl2HLAa~*J2+> zM%)?0X97B8UJx*=a)OzWhLAZ?#&GI{?EVbK8TExq(Qc8}36})SPeLq{i?J&*+E@R& z`d*-9+?)gNw1)8D6ymlPTUd6BedLf7d=cuO#xDvLepT+Bzl97ep9`{!q;Mv>!UTYc z_q4LrA-{S|gS{O#bn*(5q@dPTM>;BBHk_*dzi|z)|0DAG2x_n(?H4_Zw~B-6Hl~fn(n# zB7f^L_7ag78Di=rjqKN0e(75L-=LRABfEEd^FqPt-?TR$Bk$hmm3lr}<{Q27Rm*(C zI^ltQn9@4VFe}$Hl~}FnX+*4H(rIclpkfVoviRTUp#}uR7!p{ZUeBhi=(64}E08#r z#P|kv71^isuxdV5qj|GxRu{Lc5e^80T*D++glHAe$saSZ?S(LX#bTp|nkTUP+|TRO zgUEcf)c1pvPaVUvIH6AGK~hhWkm++7PWk%Pk35$ZEav9P6))Mx_5H7P_Fb%qsDDzF zr_@8NJDcb_FD~O%W?n(FOwGDPz+-1N_Y=2^r@3FAJPezDZ|-O4_vU_m-Dhw2S>!&& z29n~v`SlIj)fJ-gNA4o7x!*XQCWD>7EsM!9$!Lz&>Y!Bcs*HOdTf@|dQo>edw6`am zvqkr%!zrGOH=ug{Swiy zkVxz)+o}F|afYW?Ka@yhz3Eq4smsLe@V*{T0^3w;EL8%Y(yq`-y$|OY{DKvWgu0}I zOfJY&wzVQ+l7Y1PI?v~8e;z)`pJZxXZsq%;KW1>?6+m#tPdEjbe$iIhL!D67_e*cq zV27jecBqwa3xzs2NH0A>+*dbK6d>JXKMHAgTh7V{vwxmM-$5w#Sng&YBU z;S3(?`-^mxyfecZ$I3G^M@)}z)PdYa={o#m4)aGUCKV*aGEi4YP#E(Qb+v<1(p~o+ z2RXd4hX4plGh93u=}6}H;(w?BY&`-^V5v(fErii~>sp;{=xW_gU7Ad~m9@HboddGP zjl4xi%Cv~C9FpS1NEMvk>GvgFJin>O#d9a2^z>`Q6cZQI9g-d(l%DP`#+( z(tnjKUo7cE_eifwrXMQlSMHHsp2TnKeWahi2Y#i=^miq_7oo24(m6jDnHe(Q4w+2r zL$iJ6`+AO&P&b!}J88fX0ed3qd1{fU%u<8tqWObSdToC7v4$1EzqCBEHGaZwhy<=Tb;4=^L^%{`lGyUAe0G^`RpW_)w zTwzEjFJ7TX70 zmeJ2lCo9mI3&f)@$2C=N*7tCS+<0uK%en!cTj08@b6~Ru0o}}MAOo%O6$E;Y@C$LK z#0e{JRI*qos@MhkoRj+z$qjCB`6hL}WRYR9Q9Zarv!>=k?a^gnK{&m^Wy|-E5%&Mo ziNxom8F;ad{Mw0}ExtTiB9SwY*-w&`+ySlI9IZgT^i?FU}_eC$zPS?DYDjGW=9_zcLs`NUf_= z6TH)pb~t&i8bD&({(ErpLCN%ANcyflI5{Jk-d)na-6LJbp00dT9qDC+V99iQU+aT> zl!1tKCY>}eOZvkuiOtvIX+2VOHH1>@fT8=hU47c2NkEeBi*xfJ!TyjSUvxqG{;@Xd zSL$ZU#y{C@Jfzu^jJMH-cKFUl-Ph8MUmPul3RU7~va;WikaG}X4#5Qk%kR%GuOB(x zkbSSJmV7gUwzj6xXR}yae1>J1c+al(A_>)gniXs4c@7XQQ6EHU6U&9(`MrG6pHB70 z7Q#^8Mb#NZ+WjAmb{sb0+UPFgH+R!5X3OYk6|y54!Lo5%Chi}d)BzK>O~Gp~AlubH z1)iu4%TP^OIj72db6=<>Og~QbuOCt1T!A6}kHGM(`&jxj6T95bsi};Ug+rABU-OQ=Di(bZ7$Q1@Sjt-VR)pb{N zVml0M!#&f`-Oz=uCk5T|dhukXp?iO5`la>3{0v|HThN0&X0zH>!eb%xd)`HVdJhM?ZGPQG_$7WE~khyJ&EUf63=Jqm<;9Q>b&bd7OlE=9`=cSjC z>*%9BfK>{x(*#(t3kD9?ClOLz~r{7f|Ya2(N@RFD#KdEo-q1+D$|I|J> z1c>p2$%^B@1W>(^^dxXzvJN$Z(1ZP94kgV(b&L>)t*o+Y1}^^W7= zim4eMcfF@_=^pYK*SU7t$$1nR4KfJ}S!45L27UtK59gG40Ok6rI@aXBVE7g{w7r2a z^3_g}dt)}pfOgATeSSQ&8wSYjdHClVw=ATZe=`&aVrp1li} zazOb_M|38&`w(#S##Rx@D8rt)ja$0*(= za{mo8oLR0F_82j)Ed&`is-T7unN2HX$!V&TrN|k@V|C=MPR zJ<=y8(~p*PxqK`g{;kRM?RSxW!yf6Uh}sbRK9uw$38k0MOQydh=?4(n!(L38&*Q&e zAs%kl=z`W=IczNrWAOCPOZrFU;($_LUKj^Cgf3kd`3BZF1-2olw{A8(vfHM~K;gQO z`D38*M-~~^I}4qelAS615)i_|n|rz4b3G?{7`x4Ix=iJtgcQUuFAyiu;8qz;zx_;f zt(f}=0=luRUq`sVA?q`xp9oW}VR290K|wIAmd_nPAOwaZg@H@$Rb?z(d z^^}YzG z6LNgfDF=Dj&0yn&vL^QxIX*}hKxIC9N7{V!g5B)zwE5`Cg4F3}X{3ta5harCE*cy^ z(VeL_8l{clV+APSWt#d1d%?qE_G=f=Qd(0aK(YbC6M`j^+72UXl(XLs{LP)RnJzkc zh(~raR14Zh(3+U97Eh8+ZdS|XnHV@EXl~IHid6p<{HOhQIDP~61iaatI*hGk4gd+5 zOq;DK_I~Lk-G05_W3Th^3a4yiq*PKXyG-1Ep^MGuTI^axUfU1J{;bNb-=i81H4s-U} z6-DCEEa~1$)4%vEah`FzA%{H5ZeZ8hGZYKiH|KPy_j{aa8Gr~d@Z4mL-rRqElGsCt7{P% z@$TxENFIHk2=WzNV>cn#orZPJkau6N6n~2>_USpGD7#2Qz{CddFKEIu%U+9o?AEg3 zH2ecZLdYJSgC^GaGJ?VbWUsQG)1~zPf1|z4o$XcLx)D^M_db^y`K%a@hc%W2OTYBi z4J4uVt^y1hpS;}}K#N|$ThO{AH)!3NXAJjM7>(;Q1BK0U|CNk+eI&|0@=vGX7<_~s z&_QgCU}=Xpme68hX{dD9E4+EaHwEk~*yaESw;=g44eu)(GIh%M?g8s4IZA+cGkj61 zJf^QPM#4FkaZuT12Tc()byWYHv^dJaYVGZEN`msHz0MQffVOZ=Q&cVx(6EFwl#E;%>e2N~- zYjSYCr`pB!TUp=kNRb-p^pgE+m2KO8m6X4FKX;JhYe7pk*Hq^Q;kUvq!gAK+alIy2 zaI|fR(QDu^qp=OsdyrxD8q`}3x!GAA8I5-N0S&&gzBx68493zG;hre)Q9kckeRHdi zQMXkIN&Dq6CzToOSuNg&lKYkQPVhbVTRSdQaTLn665@hX3ph&4oFG^FvqcY!gY($c_<;N6vA*R@f1CRi0Yuij3fyPD`^?i%lXWz+9|lD~gFK_%v|;XZ zi2JN?pN4*#{f1Cx82Kl;@#EwfG_86bhH1@kLbG(}h1pJMj($Yv@>tx#KQ$dcc<0_Y zmB5qGKd#j*QDW>g=)1L*&e#_Lo}cizTied|rmjewH}z1T{_wED9L&q-9|a(2)cO*p6V=jdI)YuU4+nu81xw3p5) z)4#}m<)u>&l10WO5L!WwIU;44U5D$_ai1Wzj?A&D5e;o}cDqY|vdE}slw6CG1V+}m z4nSrv8X(SQ)S+m6O{bU~N)xKd?q5vJ?dtCUrYBN$W#|4@r$283z`pwP-qm~b=eIrf z+MkFF_6&Tdd$r6l9IjUCs6x$Va;oGKcC6z3Vf$8#?yy&#fys%rZK}uPc$PT7%}v{N zn@IK5-rdu{a(aw+6jqy@zo+**5gI3$>I9q=cnT(a3- z;_@ZVS!g6Z(eL^oQ&kW)8s`hZ17>;8JnXIta(Q@aMZ!}` zNw~NBEOMU(?la$g=DE*Y_nDIn%ZpQYUtRa>A@g=I+;W3<&lvt{#_8uB1MTut1&tXF zQb&<Pqq4k1wz`TN?bq!i|KwsVso^YS|b^ zDZj=uK5lUo*ped+^puw zGcjeAMZUz_z?W!U!78o|mkH7gnp{VP;0!b(YD0&}?5AsqlHD1yiFdPl=3`J~kA^r$?2^;|Aaontpzga_ zIvN|dUERM{NZM(@uH7N4e*XZ-D~I!sdE0CX*3UvsokgMe5UEaZk}AjUt;*80DqolF4^&rhoBjelF|zT3@k6 zGjV@*1L~Dwc{_9JdAzC)iZPk1Lc+(8iJX>{&F84J3&CL~ILNLPx_hq7OGc8J?i6vb z;7E~x9MfR@VlL6+^SA3kqKE&fR|1L(oO1tqusr5w>5C6%#aQ4qOQBMM3&qO_l+w2NM;e6mG5b-X%7`nUBplj^we9c z1zKf6`~YYDR(nOtDvQF$1+2yOlF2$(ZMsFvr_X3^Ta1!ev<)I9*CCr|6%2;W8HP?J zhs!}nyK)9p&@!cpc_g`KX*bszwdgOp0LhvR|7;gBFs?zttxQB)1Epsn-o#$%Tln%$t%Tr2I4C$|nDf1mVZ9TtFL!d{XXtoEyzp7q-l9pwM~;K6vsLJDxuaC9 zp3x~*PnxXy5Q@%He`Mt>{#I&2%AU9y68EwvPA(CoaI316^cbP^^7@`_;kQ1LehzNb z^mN(PsVhH0(sKx~*US%&S8Go>>}GIj>T(wo#js7fogjVj}?8O`cu0iwEzwZ<->GL!X^*N;&wh!qjW_ufRaqC&9ITra0l=y7W6rTG2UMW-wH_Vh} zK;gEFq^w<2kED=K-8}qfJw(W%tNgXD@}z8Cx)NmJQ+>CVJ#&}~U}u%YYMystT%%#c zoO~LLUxWFHbshMqUXNF<5Eq=R>_XCP9aDkSJ@?w=#cu)b4^#_QQ_LeUlAg#@T2 zS;OZ*B`241#gAskDg+7JmJOI9Ob`4J>wjK`lP@M;kfL&%!3SX+tv$21v;xY0dV}<( z-XiGNvkY(DU@dC~IA?sQH5!%HtcNN$hSA6n5Cp)K62p4ddg zDG~Sj-Z0AFFm*Qa~aN^P@j0Biy1T*orGRJ4YTEb8NElOG=Q)5Kp-3r#0k;GyzjyH zYKXIveBn2h^5i>K?^lusHiu1IPM6)KOn`EnTd0x9gvxssputnBVeK!yzb?@E7R$VY zr3dWqPuP9ei?6td8a{zUIIrV3B0uKkf(v6>WSn?AMh`_OY~UXknp_GOiih4_n5R?8 z(5?oNCM?=Zv#9717DCic)EkT;>>!FJOEOt8DdtLpDVv3^>#zWbmpa?-(a4ot<)BfZ zv(C)d0Jf_Qz*E;bXuMjPM59QjYBb)G3PIyZ5*>9WXoSt51R#D~SNt-WfVv&K~OpSnh} zTunqelxv+V(k6ADWHI*0lFw!B;8G!34wWokBGRF3OzPUL*OI=P5F~7qPh+I#yTJja zac+{Vp*=vEdLNvF^PeTlBq9Ww?9@nyR`P=&7MYAx45`Na zCScuHOKzWag}7*n*ZNJ)N2apem0w{d<#Inj-CfW~5SvEHRLE05)yPi)YW%~!?Wdpi z6&5bLpjL#;Wt>ZO)_xfECqAI91l608oPLcJY6*BQ{MoAhj;W6HX>~52DSN6=*ZaA9st(ouX0ZqC!L_Pq0~HJ4vdTG;Kc@0$q!mpA zx6rRuXRE^25McjQr@;NY@|vhmfzN-CD>$C31jDM1GGYO{8mo5*<54 zr0Y=qY!9Ogh?lg?y8AX)Sw)w~0*7 zcLb~hRmTt1@dZx2Am_^1b9H=?6F<5u{x}`qn|PNs#et)Ha}#yyTV0Z~*exo<6TT{K zK(S#7X>ukx<7G5*2aUws)z-C8qN1w>ztAm^NvlTlNnk~SPL;ZnRyVS|s6Kdz$sx6|kG6Rc+M19sg2s7PGmVK<}%KF|e45YWd zmPyHeawt}M#m~lpqL4ME0@IX@VoR$}g{eDI{M$GTS)5;*qY8n|9=7qwO^SAI*l9bI z_^x2*{@G-GL(}VHN#)l(vKq2%1Gkv|sO>_(&G*krx9iSoY7+BCN25Px58R#)Qc^+PlFeSywP= zaopP%P@B$f`Vc$)dJ7<{Uxi^Ch!&t&eR=ll>pHuMG6?pTb!EUmh_{IbwQ9NzrN>C8-)o1MCcbKQhN-Dh4hEY&;JzJH}u%R0yKJQ|rFw9jzY8oubb!oKJX2c3VC zN$w!QE#DW6A%$LDfZ%k=PfoYkej z-TmV`ORGnF>t08anbo5~X_(QA9u{`$MUTq|DD5K}iDw!xu(!VTxXEbTMeJ2aaf9=q z+z6V-;XAHvrz6QXxkzoO(47dY=uQNn?!?rVXzXD_^>`+Ed-codJgPBvECZZ#CKL42 zIcIVg?_gno#gJr$M{-s}=H$YZY%>I1b4h%HeED;|(3Y$;hU=WA5h;wHmt_12G}`Td zjV{?8#y2-Z`vwc&&^OxH2XX22E{C+iLmGq_ z%Q>;QQgF#}yIvXxEtQW+1QhyYe0n4T6BQ1_9+eQx%QPd@WlI8RETK+mI&x(>N zrdSt{<(GHLv(EFF6+V-J=SZ?aba1~MNW?PQ2Z6%x1C2jrUSW?Y;kL)u2ih1%r7aVD z!NT>%%cuzXyTmw&&!leXW@H{%+~BWkV5PPxXrI?;M3=BJx!oI;-EZs(mQiut73h`+ z374Dx_k*${w2@mzRs`+4bGpe+D}Dcx?Ct5iI_NaeWhZj5@YB=^-!<&>>KVkv%dNrh z*R7;VV4Sx?u-5yksM@VjQ6Ae&tqchqt_PZ&6F+L8ebG0hcinoV8g(_aSw2FJz|3~} zE1%`ZZ#sm#2U^Zc@6NQoj+W@$Q>S`UM{55#``5HF{%_r{br$7+?*1Ll!Q?_4Qz0Q0)k0dPQVNyBX+--s#0?8 z<6^25doOK212!Y~#r@AHBGaeJRm0kQA)-X^*J`|W*8uix?2?r(#IajvAxW_`~4 zz*921IrZT;xBH@-n|%<&$O49Zku#YN$BW9%ZwbWN&)m^1a*G@43GAHsFxg8JzmETTT(c-U$%3q@fO(|9 zq`Tl`1(S10PO99Mw^e63MY4o4N8)Z>8{S_SJY{3-ta^^WQlr z-T&cu>y-jx-~9JA3jq7#zs}oP-1}LWuPmC`_U`q+`|Fd~;adaVf366;{Ory*K9OIb zc)1bXmE*nVFEC5c?%xqImj)W+nZ>BrSJr2aN3(jRgq%%j{PJw0_zgmZ5L#sv zFVT-^(-zFlTyX0?@#RoqYrwwyLbtBy#_n>{aCFyx6RVhWPLk0x{Gho;Mq^@wcm9C= zI4@8XC}tbUfNWk1oYyQ~^PN|2Fr!Oe)TyK*0?z{Xa-hZdOV^7K9Bx_26 zY{;KChf|p30qnPj+$D zb-6@xEc)HPXSe(PLYg0Be?0v5E#D85t$anE@KKJBPJE0_5MO+ZPYCDZfwW8hawqiODb*%k0@?`g=v=OW%)9K?Di@YnsH@ffeMk2h`Fb`5#(fAT{~_|Q6db-aM$Oj3~X$rCpSO zte0<@NbT$ifLECuZdX&NAFO0e>)mZALpf-J@7r%wI z%97C_r&dW(PJFSzKbp8Q)}CFe%F6UIQn@*7!fs3RvN$MLl(LLk*yyeMPG-SOuH}S> z766^}G_2!Wp+)3ZMq-Ik`o{RpZ7t+g--85h;H#mY+f7%>t5s9)F72H|hWJ_PZ71JZ zUHJ;r^Bq72!E+-|KKHR4;G9^mMYz?`ULld}H|9WtHHbykO$ph8$n9r?h~PqnvdC;U zByt+mx(wIB<@|76aA7-li^Tm}J~9c-;|Lm8SCm_Q+1N@s@n2;1lp{vm%u(`F1R6d@ z?XiZbhqXNihs$b%DnH8E&u(x&Hn!XwgV)*Na7|8#vp^v}7p3R6*XNpRrfn0YhfR~^ zy@zu#Fw4LnL*|=kJgx;r<8A0R{ujP69#NNOQ{y*z#Z6ffX4NB$bF}-!kT~cz_nD&&C+s2H`(rMcpH|G^^AG19*O}wJopAy}fX|9_1vYa4_ zuKzJm*m${J?$H%)3yAXvTP&Q<|88;ucxPrLpNm5Kc0-31FOjzlRG5DA6t|9P)z!5& zs)JJl-eSHr5ZK-hgP@;-rQ536N_G57;g{H2P6x3-|7BYVlYFN?V#~P#*Bk38ZeqEh zgzdM1!tcU&aH2R%R`s#tgjBr5G%H`>%$L?&qsA z!Y^cKxs>HpF|wjSE>Wg;w>U*a@rB_2)ad?%)wucC%*`LU}N#$njR;c1L-*N84GEBX?qP^)gEn0%B z?P0iFUwu4Lsngr(3DaL2v~J<+W4EyNqn$o0H=havrrgx~Y|5>t1StI*(l=grr@#V6 zlH$oYqRZB?;IKgLItajs)BX8qRbD(q{>AwKQ*%HUQHcPRb)Ehak{cQfDL80LEQ3bn=>ru5)uLi+s^vG&~+CHcUWHzr>iN#F`?G(sN-MP~ zsGH+?RhNJby)ZUJEq3;DqPmn?KS(lnoG7(#6~XYmPvy873#P-mgVNDYgpjcw}pzlb=TtE>`Il6iAjQXJ}EC%y^s;@-HokC z@LI^Co9w3LzuMRpJQ(-+2?MdI1>1Vi;B>y2%)QkI_OH=>5^ zd2=MoN0OzMh;)4%G@nx7*Qp<)3pEKNgQz3^ zyOSH8IRGZx)(yGTLpXrj)YmN9Ut$=68)*io81NH#>*|T~HFekVhY)YZj;8=u)lw!{ zxI>qb#oXt08EuIS@iqBHV!y7leCcM{tfuQMauhRMB1IO{N^_~NDXS-$SxW)lr*7s= z>ZVQ{B4;P<0a#-%eS9zN690tUF4TrXheMI-z@|IbLoUbj8?>Jtty?N*RSnx7MnJv5 z@;YoP31qI2hn8#Xte~8wsV#=GY-b_+@j1|kvBk-@(RuM(9PzeXV8{*s-(ZNTn+Z9e zrV#nYrU8M>$1ntqXAK^*UN4dkuxcm-r%m}f6{OhAM=cuv_n#=YlVX62hgT^4CRD(?mgB2GF@Bg_V=bG6+tqnnWRHSh zM4)cEqoxjd1HoXGczGaPys=6)kRt$h)s`n`&qEE!CAx@%x&}dlqGI&dV-2@>UGm{+dzsI8z^% zNRK&?|9QUdylaUBTxEh?YoRaP1pVzK36_EY*~?u^V%agXeIep(*}`!Qra(=&%!L#5C3 z%;i~qvV2%Mk2jfU92w%9$~wS@fXzpAj(9*mnGmq~zNFl9un0n3bCaq>^9XO1;$es8@oNHVbc4pHXcnW3xs>KBkbwOZe<&(zqxuVAkn|8dlAMfcctk3SY-?E9H3d z5@qTB8{8mSb)&6NE2a`CqQkk^C4-Y8dwxPIrGMP{taMY-+w0yM#uQ4g)bbSmmnjwF zRYq8LKNf~xKA!hDrz^6shFNS(uu%5~JB3o_kK&c$Td{}8{-Jldo#nii>aXG}e6L|@ zA-xa&mn<){GLKTvckjR9K;lZ|*{f1dxR?c}FXT)We zMOu1ah9(MGqu`?cxw76SpAjkTs4g=W&?Ncm5$biC+~)&p2Mad@OMmd*bE=dn{gIC$ zvaI$_Fk^#PuA>s>Z{w~l?)0u{n{mYYA67j6yMQxn0$?Vv*>tHj|R z{zCDvcMoh|=fp_;;!14HL0(6;8qq}e@qA;ob3RQv_56JO(WZ{bhY$%u1#%4gqDJwM z2TT}=olsThz($Q5Gea4CWTf!-_pfU%6nfn z<@Kd7_C;LS4ClXEB#gd{36$`ObCHwq2;Zm?jrUlw2$7AVAp`crgs;6BVs1r4hfgjy z6VTEST1tfYI}rymOm&xPdhSZ6r=-hLzv*Mvk3cqk`TPp_74dWWGr9zNUSXfNi+d_t zoe%23v>yhdn?Oi!FU!(6F*)IK`7&p?ww;YUa~66+G-yB_W3F}l2YXAyi_)Qq9^I8W@l_Fq(G5Q$EHATzrCDZkKsI7T zcVuwUM|4Lw4xmPNuw3Jv@6(=xW?r=8fR~Kojxik?g%0r>bc|`yftE()E#|v^f$ev;JDt6<-or$#@8A4_k^<<<^%bun|4PlF7C$k<;@sg9#aWL=!=jy^^dBRS}soD{XL z{S9gTfyO{S;`ZfBF}?cdID0+)Em|#bC5JaUNQ9i7&BtCnzE`A+;yw1FEK=#aSAFp& zn&Jguh^EL6TD{}lL-s3|XO)~3EURhp-utzT824U${c%3uYcg>3#Dp7hlKU4vAlv2k z8CsT#Jv;nNJ+3%d-8#@d9^s5o{YF(0OY39voBR^SUBw-;XKMrM3#=ZymE- z0Fj4#r}6ahz(RW`)4gi0Y(6zt{LBYe0+f7C}l zQZM`X|I`aUNEaIF8she)zcJJr@LysLu_}t}2qtC6>4tS(j`_*7_N2dYJeMb358c-U z8oxwzK=;qOjW6u@ zhidw-5*n`>vr5z0kr%CFu5{?Xw=}LWa^*z=c@Z=}5_u6Qd=q(5n8kV?@**Iv#uNFE zyx@O|yl6_2oR^H^En~K56t;-G*s>RSVXnHu>bXUxkmrWXO}oj9Kxq~7LaZ)1YQzrh zQ=m2S;;N8!3Fc5_oik%Q8m(toP};hT{xUE;{~z|w1U$;>diV(>7!Z7;g2u`cHEQA- zsws&9C6K@jWB{vFTu^I7(Q1n@BUqM1CL;{v2)1JBV#T&r{Qm_ndRjJ?C5q%J*R-MC%EQaabX# z8$_+ln)t-iF@ksau`nBEWwCbZaXkCjOL7IAT%RV9*McqEkitAAudoN1cM>}L99Vgp zd_g_bHI2HaQ79j$|81TQ4rF&_*S{lt%noBLY29N%p?0c)K%{aA5sh@Nw)0{G|222A zokuzEn)kpYB03dAlp?2lDmKCLoyO0h2A=4QZQzo(q`g{%k(`dTB8;3;f(|>UW4)ZU z?i5XlE007RPh>pZ83WLJNhB=nz4F-{2i}b%k#hXoKFyggt}!-0hsT}>F(Sj$`Oln< z&*!y(SN=1Vk?~B_%wpd8KZfV=rM#E(&i^qyj~~vvhj;#u;d%T7-Y4MK8_5Lv12(fI5cNqNOhe36JH& z_mR3*&y_k3Y3w*|w@?Oq6{{=o{hx6{?o&N%#u@iWo z#5?~5K3G;pW=!Rs{{o+}(|Di7JO2efafMH91uFgoe6ac}1U{!*dU*3Oh=1Xegkbuz zzw(8D%m6b)DpNrYCflC>bmre!3USluXhf><`6^N!!)?NO>BlhBtGXbI-2M<~tGXhm zNJ&cuX-x8@+9IWmZSg}Sv(m>c@qj!ljoczMa-sxlOy~dqetLOC4p{%S^m1*2Uh(MBV7K34ltdh zZWWT+cC?bzK3)QIgjz6*3A_?Ni5C$YgeLr@NN7S$mZyV@Ux{PLbr^+YRMLZqM&J(a z;gj%&G=)UI!CP@*eqgY0QBP#B)IUw@4-BN2oKf<1VlyXp&x(%vEUCKVajDVT;uNO| zd)|@v~YNG{__Wuu)CQ_y2MIv4I-U9hOe+*qli( zgq~UZl}PUL`vu-D1xW11p&nf_D$Ac2axV2+8h?=XJ4QpaN9RTIkP7?*g1fr;dx)d3pL0)ww+-ue zjx;wpcG!{G0_MH@pP_%ltl~@2QiA21%tr)!7hMFNB8bV^y8S@B++lKW6hENqBI}Wy z@Wj9Uz9azHm(MAhg;gGg7RXdPIt71gqhFgjg9i*xvJp|?+k)YI>Tp882PL@a)43_i zLsdt0(KKz%4slLuh}WQ%psMfwK&u*Z1kkxK(XzH$idSaffU4HUq6TVW09o;2+*no7 zxz6HLotP;~oo`N*I$>r+TDJPS*vmja{X@nKIg7_4Krl-i&4&Xy>lwzIjrZW%<70CF zTRBe+t^=GKiDyJr8l*Fw|0sV<+z*3s4?a_KH=9H16h@oX&ys74xG+qp=NYnZ;XXOh zBOQFHX4z=7ASeblN|ye1Yr_$=BH33ML~w2$!4JcJ_&`1!NlyyZVl4yZ14-<6YpBYu_|7kDHMK#BOugJP0U8h^?dedQb}R`#mbE?0Bw< z^tM=R8ksx8N042r?lyT{Wacy~9-|dcjt#MyJLgZgAL5QD!SDn^&>oQ;KreX^jd{M{ zK3?^l=$PRlIa84k3gjr%9K4mvTX`b?aLMnH{1Z$|qs>1_awzGO(ih8{5=cd1I_?+r zT6C5IqY)scq4vI@VWw)noFa~?CJ}%!seiO~uzatada=`Zn~Z`Jee?L)a*z|)Qq#C2 zK*T`qrWP+oIn^&a2)t%dwwPdl(KK+D^`_Z+9$;9ABP<&Vix)5a6}%{~Y3vBxrv84B z3yb52s60zN()Y~cVz_|bQPV0fEDfN$c+Z@{u~AHJ63alN2f>y$^UC31%U_cqIJgRs z$=uz91|FoCGXND$#I91NK3xnD3`>qTu|C3Iq}Xrb-aieKhH#ACfoUYnB!N@qLP4E5 zo=cN*17S9~IM74J31)wraT19-Wn{dVXPvNw_gv@pCEn86LiO3x5gHKH&D@O`5)qb> zGgwjk$jTdWmQI0K<%yBR&+*OI#~r2se|G#3k)iQvt61kWhA83#`8<~`AzYEruL%g( zr~v&VQJWG~J~jT%@#Xi9Cw?9A$eGk9iLb8l#GmB^04KD{Yml&ZOJrI+qIL&*%Y2 zk;w*2RFdP`Aa>rbh(D<~LVf*s5BR3zUD}|4>2kcakxIdzw(scjgp0``TVGBFMZP~+ z7BNwb<(>-L>v$n!IcvPYML6^9oftr9>_=gC&GIL0T$%a{#`IE^Xw3IDtU5c5L$tSb zY13HOX&US7G(J)UUgR$Z6V7{#rMMZe&%Z#0cpkxhjGxur&^LE3usMNX=X93|@1 z<>b-@hMH)tdFOd3p~i^z4^3f8{}i)1P%JBkovi*{ADOQTTuj+&zQgK_AC;JY&GorY zs{Y6f!jdWlTZtB1)$xquM&q(b>f%;2B^clzsWu(AQdZfC`jws~;{} z6z>5&5F%SS8QMOV!825AKv^!=nyb_lDRr+BuQ`kmI&B_jM4L`}wKHOy*>R}s?6^&Q z8&T{6_u&9hRP5ujmQw#+iT$9Q>U5aTKNk%sq@742#P8G4_mS>gxKzY{oQ1>Y5%@qm>8Fr!&sfEbo(v9wpfS>YB-HhUkG1%w~j3KmcA~H*lONBS`c1XI2lyd zJ8%Uoyapwy5)I)&<1>lIu(1iEF^bc_6k;cc1|p$*P@Tcg?@{TmCr!tHmq}0Hi0E@% zk|I~U?1NgmWM%Vgr5691tXyt0rU9mFvhuw#iVdaxz7aO`BO7F;{sfJSoH4|SDzY4N zFhd;E6}^E^!a-D`61B8QQ)Og^{D?F)sYq#0nlyF8ADN2VM8$muK|-2SsJa(HdI+~M zAvIS4UPaZd<`rbE_%ZH!ReIFuW?GERxzv}Mx+G0HTNZ34zbm2?YvmwnPST`wIZMr6 zGU$<_We-W*hnrzSAC(**^I0wj<+=s(Mg|6Fw`a}b z+OD0ZEMK-E1A)E)`p!-N%#iV;I8xPM+SEdm!i?T zDH_8>f!@H6g1e5Zzp`kLv#KT7j)v+}r*V;_GrUCl?D`8d_2PJ){$AjOaQxr`Qfc%^ zXK|PpPxQiU>F}=J&f+D!V-t510tG$eTQ4WHjOW-|{^UHabztT6>5QV7bS1cJu5;rZ znwKurYZrbduY(%+%Z=iXjKl(B-H3*vIVXwIm5K|;{pTYrv!H$FlUs$7W$8g_X+NrJZF%;&ha0b0N4dp3#*H=p;X;s zbA{On92er{+woZJYTg@L)HeH5U&#kGp?BsDQR}D8g&wu=hj?^&vhihW7yp6k+^k^x zX@R1e=%q!(q1v&irZwKj9S_e{3)fRaVE>p5(7qRC2fpX6dyMPo*mTN*o!I1waAZ+A zz0f~g>7tgv93i9Kl6Yvom`$)OB?gcqsILcEoAuljd2;%XMDyav>M`Mb%LU^E= zMnFC>nqZzM7Jv9a&EJ>S);_6iyG~cmQU1pc#*rog*KPkXezq zyW{%^eS}Jsr|F=D9wz*?T*I&Zv65tO!uCiCCcL=9l;%xNKQ!Nd+}RM|o4UKD)mcjQwt>_9N-}lkNBHqW#Z%ciFzs1KH2K1aflxQq^#VI**AaK3S3p9d`Z+TvLl$%m&{y-E6YI)J?9HosB_NahA(Z>?DlMCDxwnfwZoli!8zZ-f2St&Kir#Ap3GYfCVs7OIN=07b?) z)eu|zb1W`P)^h6G9>%huI~PsvSihhDIQPXK7pK+(Yn>wpr8jE9xjyhA#z#Z0y*#;| z^IJ#Q^vHy~)MMJ$g4EZ-)MIh#u{8Bqo_GwlU>CR{u$=A})BRGh`=Qs^+J&C8T4x+> zButN7EvP}!th`VgIbox?=9S5~J&{v4nlb3eabhDNo&8Y7$#GT0m*b1nAT+&a-Umnm zEcWG`pkYATxj|3ebDoOl=iC{WpsKTk@`{oEJ7hP@d%_1^m4dc2sSN%;CP-qkHgTZf z7GB93nYhdw{sBa>W*I2A91|8s=aZ2lHu+XyhEOi7ocpdvwH5cEJr$q_c76+=!t2Awu_0>vpbr ziel>TVY`d_R(jv(E)%++Yfh6~cnI0I6Z9?VeKq9Qh||{lsy7q}8}Q&``*i3*i*2K5 zo+EvEGF{Gh7SCm~pGY4=S?Or>*Z6>ipnr*nZC7C*u7qWiqcJY2B+)bMFIDs>4$r#{R7)^x-^|Kv%c; z>OLIIaZhT!5c+Uaa9(-Vbq9&qCIJ_1;kgu+`@$>Yb6$^g?tOJj!htyJ#`y7D^Kj_$3}8Kjtozb8kPF1@ZsyS=&Bm&5MlD*i2dyy!tFt#_;8z{qQnKbD;rAu~2ye70*&9hHSyvUU?w^x} zTO)GPaH~zhvlmX?PaY8$ehMk`)_o>u@*tfiW{sOL1zW`dp1Myh0u6hMgL9kVr*4K? zx!KTr{Dt}0^L7t!+}YMOR*rSEAEp?R%^R)u#YFQo{(q1E-{t>F{6DTLd{H^8u)te+ zZJ`7NJlz`{Rgf3YXXlPcI#CbpM&q2RfK47fqI_?p-&X(bsT)_0pc;B&7WdenQ;b1V zVoeWjsrY0ro-8>}rk|(l{x1RlmxwGA#Z5gj-WJ4QzhndQk+8msSL;uSo|Ro&w-!-g zqco@91tgZNozV+p)HQPEA9t*8Lx<_Wfd-_kt$TY+r2iJN_@zU$T`_rjH(<{h@-%)0 zbHU=JE#tzcZh=^*#+Aem^>?`bgM|#KwVfU2{(A)!a?Vy(C(?4h zj((kty76k{yw=d4$)+HUu5RP;5i2>rYF?GfM5exlY@X<9$(Kfl!mpUu6FJ1Wkp_y7 zkgjMgZ~z&0L~D0Kr;~w5J5H#K2fWiJQ5Sc=U(An8#qCriql~Uzu~#EANh1)0_T+qN zClV64V{iyT2uvsJX>KRn!JorvGrO4C! zOE?Bk-O|^!7|b%#m%Y}6yk^)n3W6NJH>vN^ZBE@SA=^SCYu`1A@0nGcjVBDWoCtYy z)?0bBLuZ7IhDW^T1r)nY9x{xmCAJ~9D731w(F-fUVt=Iv8S+H5<_k~VhK7gxJVWWM zKrYs$n8bGRr46gH$ZA=Y2uuQXGYw7+ZY<|{MC8U3pW=7tvo7dhM6izS-s1t9P?jg1 z(Ai98*i-JU3>5lFBd&1`gzt#V`K1ZLHCCxqYlacPTrl@tj6}fPv~^)|Snz7K7?7}l zLeoI0SQ7&@$M8uVef?LM@9@mNa5mHHimBJ~hzh{n7f$*LKK)vJxLrd;s|p;z8e4QK zoZu+x(hGW)%UdaL6f?(CK>E~O`Xq<#W2jGk6Pu*VKg9{RwsJ}v9_S1h+4TCygs7$I z6jH0m1(wvdhFYOt-<9Y8;`zSpNK_Wv^}AxM5Xj${C6@fnxpibTr@ms%yqm-)H#@$7 z66oK|4O#&ik8m^ki@<6z^Jf7_zw3Df4P0Wtc>q)&+sJ6yr>8KwevB@aYDRo1jS}8j zQ0ilID3w!(9!9=uUVdM<@e}^)!`S56TZ*`xiK`@RTcPW-hQKYzwlySQG6ut&~PY+w7_=jyXd*?;5p8$aZJx zI<6^l7PC(nLIUNKqVKthh|hIkNM-PAoZkHgI}jmMX+*7rh5}{MAD7A%$cO#+Mal?$fbrfKOc~;@ zXHde`O5+Ag!rwCKal$^qbNvU+fJU4@v3ug~g6PWOble=wTrr~kBezKaml*o-Ec1Kn z8T^{Y+JNt5nV<6>Ebr?yZsV;sa^j3IvZ!7{t2eNS?YX_lEY}mgt(adbwWDERA3cxm%Ur*ti=}YrS0Rfpgxy+}?_3DTNAXR2Zkf%^ z@@?!xWa=Qg;q{LR=+dNs4A|cb?Ay#rl;-h2W+ePs6MiEJcVr~or3pbv_)VIAD8Y|J zzpn><_-RDTE;@lVGFOKwTN3{SnLLhAAF<2f6%!#%HffbrX2v)|MVNP}7;Tlr2xX}`nDa21qOYU}XLELF?zKe@N*0M9kHW1)GHoP@aB*UbTOwI+uvy>J z9!c#5iP{zTPnwm_AzUw%Biod=z5)0p*LV0+JZm255KJqf7S1FI>vW1ak&1)m2l@%0 za=0n9tz4gM&ey+aRr5_qwk4toOpSmHjy0M&lncm3>$!Juv z!S+4kmqyg135Ju9Cu9{Lj~NA#EIZdH=Qq+_onMJJ5qjdfVP?K&UZXpPU`02gpwZ>4 z`3TtmNzX0VE9f$NecRvLpT(j}@JZn!4hIU4^oSMGfA;>#{gS@NK0q~PC6)w!B+ffL z+-$5Us_JUgTk5X5xsb5g1qA3~RGu{*g{T8W!;C8-sGMf%-ypVP3+05W_J}XgiB?6=$tJddIK^!A zl(hNJ!}lL2JNL7vMffr@MD*oXw@J2^xC+TNZxc7}T#!QjQ!qTMFYL7B12bUQ>^FbRgr3nw>#t7 zJJ4Itxj(1kWoO*W92Hkp>POF~SI2njc11{UN%2c?`z58p&cRE_>jPcFw zwU6aYFJ*Z!kAD)u;_NZJTe^qT@@KRO1sbpMAg`L_4e^Z5ck3)lD+DWVu# z0N(T2=Y9_AXTP6Mm-V$dr`b%B-R1>?x!OA zsUM$m-A@PVrz+=`^_aU@qwvIfmHG8VN0;xVZxwy!1P*_^Zm?b}iwdTGWR4X#kS;Lw zs}I0b+?wC<=PQbC6>ZKKM&AYczMnwf@8cPe*cLZYL2`CemYSXLG2I>r|7F4hV8l+i zx7Fet8S|JVhzn5$y-eaKGAzzIoI2*# z(1wi28z#*AKqe~Be`#&>Xuqn3PP~R6mp`iBSv6H#%~jM6zGesdCcd(!N0QfkpA>h; z;NvloENgQJ?-mm;%nRIW%?6P{lZz>#_;G&~ACvo|;0MT4pX-TZn3HURpL6oQ!Zn+e zIH`^E0KYFXh5vKZZc^+H!V{Mx23h`_vY*^tbJ&O8ikGpUd>Q*m0>W%H$1+Q5KWR81 zPPd;Nlw2Q4`^i^v#pT@7w<2&mDok#sOT3GWf{zJD75~D9@&O=`G#3MjD}#gm=)XQv5b9$yS~Las!%W&C#K8=B6PV&V#vBc4)#SZEy5}5 zoxl_Efywe>$tpI?Zvjx2rf+%Rwm1hqQz_PUopP~ ziijsQ8#&_(|A~HM5#9vn5GryCkVrzfwWftsc^4Ictd1qDX7P+a0FhNK!zMS22fbK0 zk486g&Meh-x5bah0P-L)`M(*v0<3Hk{J<08ekiMwKxBh~R%{ByS?DIGTSJ? zls35w?2DN)rI>{x25yEarOVhEt=TC(Qkr`xvGfkqS65e_duT9fh`2Tl50ka@@gwS^-tiWx`pXnc&$w5 zl(zVh82~O6lD_sW;Co04K56qwKqi^bHv@67vqfr7&S`&|_hFMwoT8ycY{5XgHg2cL z@n*OB!Z@+UIGMH?qzkePkUKZa;91^lzF_>%&p21k%x=OX22Ke16)1G912NHx?J!=t zCF83SgU^nC;Cf;W6fi!if8D~^$2`?AymHJqc%0b8mc2Rl4*_bZW8NiNY4p5o;^X+j zUncR@RR_ejBFpj*HGIFO-ISkwRa^drsqj z>4F+?bU;_khWN=DAm)Y{IF$$yFPcd-DJ7{qZT*PeQCJbnh5#(B%;J|8-th~d4aClT z*H`kDH~8*0U-swTil_Y}d~%z~%kTn*R4uU6s9hs@-Gn-A>-1BwC_sVeD2LsW-Cj3K4A$G!WJx zHhQ>y?8YPRd7R;lp!L?xX$;ua5rwBTlTmreCWNg`N~3LoooL^o53icPWR}C$Lr7|K ztVcEv!P&)G{>oasj@gbVZ?YcKNzarHmucXcvdh#ZsuGwx3(=xNgoJ0r?&nc_UVIgo z7dVZr@)mv%1T=fzR4$QXeVFD+jDjw?Qg^N2a;1egYbCOxG|T3Y^&;8?r&R zr;nSvwf^X21*RX9Y6-t`@^Or)0=gUBL5yUNuiK|!os;36qozO;*+g74##Ch zwZzAHgL8-z>mRJ2u?*RcVH9d2^zPV~k>NydaBcx(f8T$&Hb5Hn?27l3T#V%{qDjUv zEZ4+cnQJG;&N{=sA!GfppWtwo{q7#5Sj?1mppy=q4pJe|w)rc%=J{e2W0}6r-|qpI zT{Bf{J{}}DUe&ZcT1uj2X;VUrOKoJOC+Y8FLJE7X33S;2uvTMT(gt+18CawxL|oIUiCO5 zpJxlfZCCG^cWBaf9}p1iU|a!c=y5!thTi7#D6i<~1P`wpL|mWfOkt&*gtE>mXBPOY z*|3|dVV!!y=*nW=2#4$zTV9hmL>63C&WJaRU)xi3yzX$Yf_gZh=~9dRjov6 zxVd^ER6iqhl&jxP?g#(v^x!21qR1)Xa>wH6c@GGtVo6&D`_eGtup9>0NiN|J%twTK_krcYkD~WZ z@(;k;i{1@a`R9cUdRHp1Y4Q(o&i9gk$kH|4``;)3(B%J|{voxeGvKeIf7;%@=-;=O zf1v*oze*22jz3*wQ+7t|=q1QhKC^&-AUja|z$GmF^B*VTrB!h7YCd>QI**=UXp!g& zh?@O2kuScGP*r$+^zcQlWt+7PJrrj4zUYs)v3p0x-GF2(=anj_ziG~*5~2&}c30ID zY&9;##*O_A|Zuif7$+!Q`{q0Vg`9DM7qluQjEqyOn zGaXb|oMqV)D5vqSOp}M8yKJG%`)vZ~_QWX^YW5a6-hH0WRT!BwF;b3bR-1h#A8~>{ z??mh`a_rS=Z4$4Gpje_Aou&1lufnQ>>kQUy^9J{1*Ka{>OMM@kb0xWE19#7;R>##9 zK2yiJO5@*IxanFIt}PP*Pqgeg6pQ^r-qb9GGk?Mk55y>20~xRRg0RC+JW4Wd@0gia zJTs#wdlhs|_>b!Y1_}$r*xy6+VYV4fW;_+@${L6#8_}Ts)!2vuh?*6ky5JvIv=1E< zJ+;z2`%G5Wh)8v1-pFwE(7Z9x>PmDjtstQZh;iHsu1+9g_%;+qg{WB2OQI454!@$9 zA};qOMn{A20IwqMKc6Ph3`IsAq89j zUuIQS6&nMuh#tANBu13%ZL-JqM60vG{=fZiU6#0h$&8_#C(L}hdNvDu%#`NG7`Wq%(g$awcD zO+@5HFPY)YZvH|OnFm;%*B|;8jQb=C#-iNKSE!54mDp#!$fIedG$!ij;bK#BCHl5V zu|&K7P{P@jZ9^4;{+lyFu?5*=jv+4{6OdnrPG9!LspHX^KST$8t|vU;TB@b?nNs`3 zl<-8#>UieNnaTLrT*PUaJ!(eDwg)u;N6ly?dt*n2fw$!7L){DIoG4v?mI2#e0^4SD z{?owrrY`oA&{M`MLEP5YyqtAeRqJSWFW$&S#kg>k#&egjRIu(@$DN9i%3yu(j=)E9 zA^^;{8;Q?=%_e7Qoq3q>$@vw!?9?>J+PV{{c7zo=qY@K7L5AT0h#G zP1D)zfqjw7^L>?~{3&Bih}D;@?x97}t`nLs%ZO0W()1{8ni&4%lN`8!VJg3a!)w*L zm_t~J;&Z&!P3J^lbZ?yQze^O``BSsA7WHg=!hf_UlKa&~OhAM+f2cI~3==sRr$cig z;F5Z^lyl4I{3Ji7B3f$k@82-XgSQCX_mFcu3(4MoQ}QGc$1#;#?)mhbx zu6~*Nndb4O65OGN z552ZZ>4%%1zkWo1wmbuBqRpqhWTX^G3e^^}6zQ}L{u1$Njq&U_#B33wO{a2Pjnq3U*?1P;*wuU`scgeNag z9$K~5Gyx$w#9AT0a<1T>Ag-@@iV||%9at{N8S5#Kq-bO^hn9gRISQFX{stroPD6e= zSr#~IprVX*dZe(m`=4N$7Npa^wDXWQS&MoeA~nMt5HA{%MGXkM0}8@?AprNrT+6_Z=Bi(u;xkQFTTir zRl!-%wL`^qxK;v)5zK1qE+uV4NVP=VYF*7u-G#6P`of9wq|!jk;Mcg_>tOt+usf+~ zUZ0hHpIr8ZrFvfS%pXUb8_own2Yx-F7Fndt{0+T#{H4@+nD8fwB3zk!9CbLiv|wnJ z-v7@0YgUzBmgUAvz_=9@&%sTbfrFqEmk5e4q795kcEN=}%YC9aIGl;%g5Cu5*lzaQ zPZvN2hM&vTs+TgUKC(nkTzZ}~Ib~sdP{v#i5R`jnJwrU$U7uW5E4oRloT-19t68ljD6a@KVNjlcO9iy^Yi` z0A0vqsn`h#?cw7>^$~#4U5YizU{b6#iiS5Kz)??6R6P(x0Qn`20uG7!{2&C0PH!^j z>$ku{d7j9##ceZ2K1XaNG%7YKbF?wrgD2SE2flB^)6d%H@}33%(Ivd?F_!n0yrl!e zS$uk8`L{{BxDKSJ*Du$y_mdW1nx5b+o}MW93n?fl_I3F0@!|QSk$nWxmARjtBO?5r z0HB6QZM{X!-H65#a1ca^s33^d8nqU3i5YcAP34b!JJAUim3Dq9s3dkha$R7D`92-6 z9M!CJS?O9kFDoP@n?x=78}EYSp__n)aO~($jjVs^MMy***|CaE=f^Zr&6S(npxg2l ztUlZtTdH*t{;hIkffM=>8LBub>PC`LHq9T2ZnCo@) zH-0P`Z%<{!f>Sa|4D?jSO=QHEW|jaHafcN4w|25$Cz7}m3TlJ>c7CQE<{-RxRmJ0T zha$RE+o~(*gC2E9`aDPpPlUsx-kkjR;3jf<@<(l;CLA+;rHwmeWYMx^IM%T=*&T3L z&bsWjj?W^Y>@ZVk5Qz~hW!XF^;(wod{ZrF%p&rQ_61f`B9K0Qm!i4u!aX z3qWj}m=46gj8X5rCErQOd=HRsMMk~?$#;{kj(&f{y&-nbUTdS)qIesKYwlem7_>cB z-f4w6i+`kb0Dzmw5}TY>%b0eqbYFZ2?!OFDVe})dr9BqqTi5(T;~@;k(*R-TV`wKt zZ3V(j3*bvx>Li37M9o&~0kOX31*TGL!`Lf^*BSdb4C_9`WC#Mnd^=5 zz3AZ%^G_PtH$AlWJ55P?Sjtdz&IBzYlVmv!p>pO{BPy`>87`BiA+0j7Ws~&L{7@Qu zAt}FGemXuM6RHA2OjJDUKOqA?a%Bh6DP%LzqhX#W%fG)~8&~lp_xErqmF2!^@&0p_TK4_jGM68lXCIY~qtjTK%}}Ccr@NmYbUzo_&);=F|K9z~lFh1Wm{W8D zYi%~qa{kR`+ArHI4iMirO$cT%G~`RC5nf1BS2G7E9(Gp3vkWZ&TPR3a3sbQnepCi{ zY86pN&{(`GC2v6IWY0Q-&kyD>xAGn>`}HmqX9M`gvK5Y2z$0_gB1^Tl;^V*{m6cVZ zK?^)0O_2@LfhM!<5zQyvVCxT&u`X`d7>hPylle^2qh(c8|KMSYNt?_n`DUrYy;^*3 zGqmcRUkd;@xd#Q9JWqjK8AT|f<2|*{ND)e`2>Q#+v zh%3^DUzNjiqLgS&6N;&+w5qw#4pb<`jr!Q$NpaxjFPC%dUTq>Es2f>%)uQU66QEm! zD@Oh3t*kC8@DriBRnNcafj7u!32tKVqQ#x)eREo0rj_e}Psny_oiyTMPmqnLZkyRNIIEqx-8JuEH7fYXoWEMYO=a9^ADMXn!oGR();b*M z3Vf%UMZWt+EUYajOcFtpcbbvpXM&r9v#tO>&caTRNnu3P_$G<#*% zD-JXRJ`^VQb%J3ykSP(eSIL&xSxHflXmk~C`@O8cU&5SqgO|D9j*x}({6qBr&@^}? z<-v~w+({|>yVuozaYc&$F%IhxkZygtukm1Cx`*hb0~ik)#;=j>bvzJ_EW3Rzdk@yc zvRo#c1X-F>=qVsyE=w5;puS&-K*Mg*GUt`!n6TN}g6?wd=*KepUz4JvKRRRjaAe+N zUVJct5J`LYwDCW)kMYwHJN|U$oL;%Jc!tYB%?w(IP0_{E^?bYV`AXQ+w}Q_n+cV)) zLrZD!`D|APe3tt51)tfZ>IFQOETsNKckTp)Ql3_LWywCsIS%nb-{5?E!}KPh5< zMi!o*mggHZ`$dHStk{170DFx58T3N$^CkM-4l`T?LJRuhz}D1g(Gcu4o}~SRs0}ez zDn?s^?JCzaiPF~GdB4bxkBRHma2awH(tK6LhIyAUtTT}(bkl*(oB7XuVvH*WAIfl^ zqI>F6Y>sONwMb$pxdRhL{%ZoSU8{S@fl z)8HXISMGq_HZFVu!H~FzIuZao1Eqcf5)zB7rZ`U&a7p-iqjL)(iEZX!Hqi)JZEBns z7;UAQav-pl3tY^d(`a4}73UVv_fl`=%yJ2Cc9J(Zx)lB|QdF?DSSz}65ZAM!HkP=& zEgV#N>#7-h#d_z)i=kT#DV|5S;{;jUfwvvAn(hbI$sQ&Vk3d4Ma4^bQ=%U=y;Q8pN z=7Lct^Ju!Q(o>782@++U^K%#Snfu;pK<4{2#&GF2!R-L-Sa!NQ&D51LSPmU_n1?Qt zk*(M9TH5~rCj?GtZmwi0dkoG^OONwoek-LSwv|ZP-I~Ig)-R_B4$R2I@sypz3QSV5 zitLzx>bZuMF2QOVW%k%KTtv-Y%(^jhk?5O{l4-`OH6|-hdi;LD0mZqbPGf<5Q#H4l z&m*H)rY!4C^H-aD1?c9+LfC1})oln_BrQyF`_4-*ZBFY~0hB zU-M`Iz#;ZyLgD&*{aD0Dys=|<+Qb#^_;xcs=bRR&M3pT3$W(*X4Sbh@Uq)dx`31G% zJ10p>l#pfeBj<5T<%>D>_x3~s!*{ykCa+XwRdi`JIe@9T{TA6pJB@%5nA}##X98k zn?`-MaCEh7SMBoLZc6WyL1~1E*a*oL&Fzz@3lyPLZiu>6A0ag4(+?GBQ1q>ojBx3V=xj-egfy?k;m>Pi z3SZY*3Q0?@T=Ry0e~0ffi!crSrMUib$k^#5cq{vBqJRhl&CYx2{EK|Zlub6KWqCoe zwCS;1sjWPQYO@Y?nm=@krO%B*AOLo;I5`JRyzX;m#LSp1!p`MJdPak&u ztsrlkc}Ef=bYzw^dc0LJt}!{Dhz)Tfhx6hvQ^&QeYqmh@|4AhHOlrT~Tmj{+&Yn># z!n}>JQgwf}r}8$b(`l5WzS_tv>KLx^?pwS2O4xx`3U_2X%OVngd|4uMZnjJ0 z2*uuzED==(&1feMP9!SX%(5RT$@6h7q#Mu#8)vMF;S<-Ea#Op6ZW{%kfUNI?tQRU- z{}i0zgaQ6AuRuKbBFVa=Ww+Nt9p_&uwc$Wq& zhLyyU_8B=&SjcgLPH<#o8Y*m%X{;>~4oJAn3uOyeor-_L-D6UJcrpxPHUK}vBjI?; z%8=88DQ-&k*{96hlSvXJxa=7jXTBN{hrj6-0uzl z3y@LCHR*HP8NP}AtJ|N_uKRP~*Ys!XH}6jqS%u)P;I~u1y0#|}F$6bUMC_6I9Ct@N z?H(?SmAI%;Ar@gjhySQxyH@ACA(3tEnXESndcwmeTFYJrB8j8Q*`ykKp z9H|qcm6P=~?cF#AuX>dAD{^={F2XZ%iI^Ji>8*IiS+JPTW1>S*sUu8h(`BSubQGvc zP)cq0lx!FMT=3m?^#ve#Y&7Qtq>UEnV4EkBH8z}c0wymf(8sg#=wLGU4kK{De18Ku zTYOP}E;A;9x^MoofQRkvj6CYXR15`vrp#u_$+EBgI-*WsgB;T#j+ex-WXlz`=1o17 zJaMfC@|Xxg9qS&D0dwB(IxfSzac=NdyoAfnOL*(-;{FkQSw!(9qfT0VIgNjis=|{Y zU}Eg1o}=3jd(ADWE@sY%jZ*Fjy6KvBa)@W6kV+xZm7?YAs?Z*DOL`%E5JkmFAE9#l zE^~3JjE>4_+@Dgon&T=`$k}!q4sjkl?VQC2F!^HXBT$&a1a7V^F%puOC}rK{rjPb+ zPN)I6$egg7;SNF*AD#eF+DGYqi#z0pXe-MZ$&mM$m;RI-vb`w9UMFdN!}nF_j#MH4 zxl$lbv=zc;o}SiVq7VD3V{)pFK#%yrV#R@{Q@j_|<;QdQizonM9I+rO=jA(%KNE;VXSSPr{)@>Vcmpd>ZYO%v{6;>A$rsjjuD#r`*voad_Hst( zllY&K(<3?6QjS@{Qtmw{ev9a`PbNVI>Iw~i9*Q8 zvGk7ZR^%981=sF;;U59(ZNgLzQd6_MHXN@l!SV~ldyfq^X!Kms2M#elN>z@&>s*jiZ5CM@xeF^mnPRvm^k~2D4c|P23>$ zzUqmLFyh3HE$K07@~pFJ|KP3*0^QelKN%s1s9%8(1v@$2-yrJIH|>shkGTL?2tN@P z`xoR)`taO$*b^-*h45lKz zGFXAY4w`1>qTa?@`T5?eT*-$`a2C176Wo;-pabKIxn`u)gBfUWcV6IFQCmm2tcfs* zth`|d>UhjzAPD&^@I^1nk39j2(+v4!={(iqgS>Cl#kzUZjf>^=~VA0ixv!8xu)VT|SpNSY4de3bACm>KkEQA? zzExF2D;0~)ZxH-Ld`Mr-&f-_nvOF$XHtdz)gE zGQl5|9z#dDSf`NB3a{G8_(F(7Pp&z27Q_H$8vS-wtqHat9xkCN*#< zgYb0o>g7}C`@(CS`KN=(@d2F9-C>&yJx2j2G=!3|owm3R@QRs(g6%(?IW5?Jk<<9J z4(x|oK~Kqf5PyR0)13wA%XpaPgu+5+omImb<4>H>A1EMi-Sq8y3`X9%2ivc5LR)$B z3ZbNHIZRQ1&N!N7;m4%=!S*_50R{?LPH?JQ2~`H1(C$=~S2&@&GpbzezU2hlFLgps z+Xix_fm|ARhy!iaGR5+>fuA}H@T#LFzZ2}8(Z=nmHZE~O<5O+?7z@}`8?^ru_boTr zPTCCjtw*r^N+&eaecKNJI-%LTG2A@q4FXu%iPD=sGTiy31luc|1sF*4aH2E+9@-DK zpX`Jrj#f;1!{u(F9Fk?On-7puLp1XNPOyPwMFERh@Ta~c#je&mraQq3-k7o2W%^-? z6TFHKG7Z3UiW7R+ePfC)b3#{;Nz#}i`h1=H20Vd$*nMNHOkdP}W2}BBbTe;^Za*0v z1_)*2n;9MB;$jg}g6(shP&XPPOSU%cje2Ns4n_~G=x61MoR*%kdd)i2SrDgSu)Wd= zipEffOp0K1>;lcgc{aD$EFdv{yrM5`*?)wj4<+4MbxpU#S0@CRMPxyN`J|^~ZL?6( z+Aue6h0kG?3tX@g(tgF_JjjP(?ytChxo~3iP&a*}+l-!5(gd7Jqw<+p6Eydx zKaeK?i}x6j}s>V`z0>zojsO7xi#ta0D$+=@se<(OMmj%)3AR_wI6yi+xJ7!4i4<~H6&D_|v1FXL+QQvqQTxy>*62RO=gFwz zv-IzD8Akjn{&tUFrhhNizvt=Sv-#VNa79pyxJUnv(7!|Z+dck0{^rI@_3v@|y@Whi(XS-MOdQzbc-m>An0b zl;u?0{WNlWVZ0YCh<8Ll+8a&zynVFC*-%GI7wvfx?RjXgL5{*ubVNP6cL&m*0kwIl&R~kJ)Vyb>&M&mBVLm0u04d0f~mS4Oz}%+ z)mX-hC2hZM%u&P81G8p*AiMVxbPE^)t~Vt=2QR}H7RGzJ@LShSUUeUD=c@_86iy#! z;p?o@>%N8e>U=e2YZrvq3Xl>?{z%p<;*(HFla-(8mc4<^j+^m$?qU$gPAyB>J!8 zkA)Gnm8C4FaHnR37{~hu+mCjFH}0MK8>pdi?i8!EH)A8Tn%UElhvwK#r8GTaM^1U6 z(7sMtI>gD{Fvz3rO0LLyNNdGZW@VgCPis# zOwJl)zUPaJO>ML;I};zNUv8D}cuX1?9@ysD`Fw5m+thG5*%QL=@@l$EVn>~wxCvN9uVPpD^PH_(N16^?~v)WBbIK)+ePF|-C41tkaiplmCm zxSZf_Dg)hdQ^r68AL&3z*1hVeBW0iws=(KGQlc7GvuryK1a6gD9fw?)>Pe*Xvfr~| z)l)D0@y#!(T(n36Nde=bwsvxB?FM6zz?tlBgO5$x=hpUD;GifVO+J;yZsaXA*I&8*Ttta^{Ji z@=Mk?*H60V;#yTz!xWZk-(KOLdv_B>_)vPp~?G257dwTJ0$`ghEAaluHz% zb?6$f&)j38RIL?0*o#`ltl@fXOw242H}iCuoB7r-8#oNp`mnm24L+64d(>qdW;hw* zg+SrcfdYj*pz}i#ZOzhOGZm<+o_c~&*lR@~3l$+2WJ&o$8RLCgJ~>7+Sc`G%$e9Lz zD<*A!DCmI@TQsCC3rA)reYZ04iSeUlC`8LJ+*!3=$cqFi5WYLSQ55{qvhxsWu=Zq@ zCvq&Y)7-yEfU3CgcUh|`1jwUHY@{g5%F2#kE9(m=(r5EjDU44_#tPqI zuAth;S^1iGtLdX8J$d^5mjQtEEVWck!TM-QxPVGrjC7FnO)o&`!comxEDj6c(MEGW zos6B+nReW+Y0F59-=g{w)hFenLn>uVXsfI)iQhu^y+D2!j`t8;gLcpi%H7qrwOThoVg@b3D(g5GM7I^;HV9scn;Om$|Py! z2wFi_Ac9Jje#MHhu!3BX6MIs`8=cH_!*1}`acx@IFpEV2ace+;3Hf+&;rWL#q?+5T z7v3b7-EA_}+8tSI@OQk&ObLxITo=n@RZ!i+OgrU;Qe*%{7+4VlOWG-KS|HgK;a=s@ zha(+PCoFF_Ikv!8YzUL4%72jp;*g^_?E_KY)GvYM(!{MiyM=F)&#r3@&Ul!$GWmR1 zlAwQw%Zj$myh_&eh&uH;4+VEq*m>(9QM4sRaaDlTWpmUdx2s^ zKCrj(Eq9ZCO_JUP0&I207RiTG;KfbmqH-W7D!{4xV6*k;Bw?ZV+yJWYeHX}bbBiS0 zpH6@=YqX1}&CDb*meXnRSQ{d(^&Cmh+AF<#qWlm^|9mgT{+&enp_0z2Uj}1$7W;)H zL~(Z9iBKK8j5jEHQoc{pbG_d?_`xjpD-E9TYB64|jb4tOl#OE?AvkuGfqcuEOlwRM z%PwVGQ5zZNJxuUd^u{5v+KvhSK`ccuhf%G}_SWUxP@BE2W3wls)ndicV9xHTcCMi> z!P3||N~9<5cbrY!B#D0_QP{@x_hpK;2@hVQYOYSyeAgwIn|ig&Y^S1=H>gc55^BWP zU>-aHmM9#874!oxiO%yx#qU&RvdKi3Q7MKs(Xyl0!9zCCX&5+OGjms%Eq~p z-H9vA9ZMC*6mM!Pi1-7y%z7Y)n!`~wT2>chA|qAA1I6(((y^c(pBsFA15|Gv4wLZr zM7j$eQeQyAerZf{&L6p`AaOrH8-)@CMw?|VW(CzuI>%|0eRC{IM<7@dzSo8D#0E2; zaU-ULekD0%vye;#{O|HEiE||pXPAt{<|8CAaB1ue5|qOxi&F1#T5n)fOkDTV2k9)n z%%WnGxiLt!llDTzXN2#`0=i1lB|Z}b<~_5*pmkUm-WdGi0Oy8(D7u#2vxZrZ${iFE z_NK#JO9{xz8}G?{aX;kM%XCk($6P^z5S%Kon@=)XVCaE-rD|w20(FB~{}yJn3x!TE zb65Q>hX`T0p5Y56;sU#<>vXZzJU|1f{N+w1PHJdfu8rTm}E|63`SxxTOez%XL#|6LniT}%ctZ4`3;FsP6^X}D4-Q@jXt0W>(;Fq z{spfT9v0+UhNy77O(x1bumm@Xv?m8!@@>3+vrT(>h8s1x4CPvz{rCUn3Wp+H6-pM} z|ENS$`Vj_kQd8bzguezn zW@o+bsTy;$xm-#wMCBnh9o7LOQnTEhk$xQ1PSQSYGVK(#w~i})yyy|CdysDmrLATq zkG0mb#GRH+Qb4MgccS{Npg>p(M07}^fQT%WVVfbFWI5uqW&MnV{zZm$I~c)B$f{V& zREJlJs{=W-JC;H^jqg%>Vj8Sp0Y(6z&dOP2j!D7PAX`IH1Ifap?nI*y`wP!rF>8og zD#;9*8-FIP+$QA(>+Y2P+6fu_M5u+5KceJyKL9RD;uRECtEJ7Q!tBhOD6rfC3h8kN z_=7iHdb3nZfkiqp)|q8RZj0e)DRoqb@6oYFXWLw;x9GAW2qr5HFoT71Q^nEoVd+D! zKhhnx8AKQ2eO-NqI<2`31z(THvHp(--j{lku?Xw6%QedreCL>;-q4#EMnvIO8&T?D zZ*zzhLTxe{e@f8b+zI=LuSrjE7K<({(KBH$vB7+3W|$q@oHZlcp$Lly@k04FGey!5 z?5^-C_9eh5D;pDf?=sge(2mSSJrvzENwPv{t z(scpkwLxBMqhiLkvPEZPr66-+g^RP2W9OjpeHvk@O0p{{)VfQIn@SsFq+*PWDe)kO z%W`+b4^ERm(UmPjAYAUPz-8}aTEy2vj_x&N?kHgfM9dwfQ|4{$A+OEyhe$k%Q?%${ zvga(=!qk|1XUkxFc*UZasJWi(b*L>dgHrJfjFwf7y|4er-sm~o2(-6cL9&ho-^>%% zXKWT%@RZg+rFI{g?$lgGaClT*vZzE-^HqEmAnHz3D>+`v+3=!TnHynLp)UPFn+qTV z%i;qw^(h{eagM9s-YQa}x|KTG8{nU7Qh@xxQk zsm2mGW_|ADo(&wG*v0GkeBqDSTK}cDxIC>ESjD@D_wep4x~u^}_Lj##4oJKQ;HU8} zl=}O)I?zIo$ZrCRq>O$7gVP{yCxD`luwjvvEGtdMde~7eYexQH5qyU}d7~GI6S3vB zb}pF^bNf4X8n&pU5|Ro$ky-F7JKM{{(j?QgN7BQgX_6kkZ5BVt{Z`70H?f4RD^gXC(b7@<|y!16X+Fhfg-8Cx2IZHSs zi}b`!i?pgAi?laDM`z*-pX>|&#Eotp_o9A%1<|$J_<_Szt3LW*4YpD-IPz9KNbJUz)~sktI2|nUH7f9)&!*vl~A- z#c$HkE&Nt|0Lv9A6el~oVozdfC1P5nUv)24V%P!PX$j5SfvWiV37#P0NZ)Kz zjuTpl2>A%xY>~%IUv@Ea!*+Bb?KZZE0Kx+rOJ*9$z*!nv!n=fLRe1e(@G1Lki%%t8 z;FD191U~r$pTaJ{*)CUJ4O)qSnqV|(9H7RynVyf*VZS!MIpjg(RGlGYlMU{+r>fNal_3Pg8 z)TvI&;XAAZ!A7($hv)SBE($nl-a1P$PD?uCLxce&>CGaAyJbMEwzw*yWZO#kBp1n^ zCup=@S0b{;e_wUlg7zi8Qe;vl}4AQaI)ahT6NOz)fhpGP@hS*rDr*ONNPUOAHv zOeX1%?kD?FmwtuaoJJ+^qC05e!M-4iu%Iue%eSNh{-?ac9Avx2R+i?>09$Cxuag^@ z4$~^RG^&{NX6|z?-;z>RfF}OJ4Pd9`S#(HyU^&{!J%pphEH&4T+V6+z_c?rru3`@` zWf^zn`LBgxeZ@M+zz^b6(6IfzyzJ|_pdH-eC{rQCa>HTS%QojlwSI{L&0e zAGI&?RrC{?_fBlHD|uMx*Pp+ReqBjTO21yS^o!Frmwr{TjZ=MBnn*Y5Fe}oDdO^3N zf_(SB3T;qwE}}F#!mLMua+W!qs?kZZ-%w5wapk(<$aQ_*fJtD7$njk-Pjn1NUL#5= z!WMKyvHM%-{<6Q(@A>*09#iNEk13|iaPnU4rcH8xC%C^J_jkDdhQ~~x%p^~E#MBt) zeVr63vcXIcl&7zTWdAU2$7yvfQ$EuyLdeYBlI3hZq!1u>=w2mq(<+@MB|eid5NQwy zEBAy7i&PYA(v@TvP53tXR_ljj|R5T86LRdnrL~&gR8o0+i3Asnr|3mSRhanVG zi*DlfnB@)9_-dI2QAS}6^Ut~39nE7&^Bl}=tx>JcE7@DfZeHA&nA_w&sBc$$k|Zm( zrx6vX^81xgWnf7B%nX!<&#%nV0lsW5yh^ZmH`+8Aa+mu#!QV$M{^C#Twu1NwS$Abu zf_I^u3O{d_Q=1hRq&8J|SG?>BAAy4+N)j4dxY{649hz|^QY^-TPzw1({-$21&G z9@#H_k}EyndeWrSxrC#kW!8IIU4fhbbhrIi>-=@Igl}A9hB={IwUM)mIe9Pll(bn_ z;>}Kw4KDRXg;2UOE4Pc5s^jlAb^o_}GkmY#wJUGwQ~|_6j1IX}gbe~5Y2oc=mkc>F z8%G6+*6{X~QuA#qG?9;tkVkQi7L5}D95{a)SuV)pZsSpEkO4J>bS8dW=7de%sS_qZ zGP|x|!p@Nowt6nhjYOL%8Cu+PVsn0;qf|2@8d5AD(c z5bqbXAV<({O$B@9|BlTsXm75R?)2O%%MYLc=*-%rzR|WmHEhmoxH>J@5pFIqc21o5 zD4{j?&XMU^EzJqnb2}QnO+Lut-vW6QO05UwE=j=~HnLOz;fahf)sc{nEwWPP!(4-k z9j+xx$M4Ws!)#BM)3{wwf%riRgOHJ*i0av0jd}sZNxq7J^~b5ml|sh_1EOUot$;a9 zSZPOYzi2=wBQtlvWh~*V6bEI6UmJ=bF4mXk4yw$30YdN81k$z2I zP^98z$7MLScakLE?xu`Y4WuY|{4DrbT9u2b(#qa8Cv{#xo$(VIW_z;&oDD0%0w%~> z(P4}3qF;YzheozCvbkdd9t!b9!_6?*1dI~jUf`Q@-|KmZsI(tDL&auY3Iwo-=mRvp z*kY}x@~l#)@jbSQ!fGzycNf2f?vi%L7fI`ix8ifBafc$kaz!93AdOFQS88)$ zTJwDHOU&Ziz(vuqJ}YlgC8qiI{jKS-|R7V*5t1O!W^jC*`oO!u)zmHCS-)z+hW zte7v~8^ui|F&*~&qef?1*H%o`ZFcAHu7U8#S^&LJ@O0z^`rj?0ecUXNk1pNFkIh0r}*0$I7)?V7Gms6>S7^?Uv;G^XK{jQmP zUg2T?|Ns5`e*gd9^GWuez4w|mYu3!HS+i!%%#WDlL&GY`os#4s>-jda0jXp2@7JwG zPY4?njAVDRB=^Nga+*CS;k|EhGz->I;b%R=1Zy?0VuE#AxN<>Xu4+C^PrX!U;3eyq z_#SCu_wfk@_Z{4+scj{RT1{Yusi^$UK{CDTK&;~9xZ`TPL8@fKNaNq*zuu{OQhv4m zvlXqRA1|UwcHChKHv|F5z70T_@i`eUZ7`)o->JZuJIf`QqCiyn|0x0jOjQaKxoq8z zuob`s;x_d@gzrW;W_%kz|HIBLJl}s9IO>Db@BKU8g|G@gupu2}M9ue84@37WlVzvv zQp4Zpq-lJQpQ5MzXHQhUCkzBA^&hiZV;fm$+?e|x!kHMNcxltJPUZgSxqrBD+>iNg z>&_PDW_tBzG$@X3_->KBN}hY&CQA&Ie` z8`N{Ka1uh%gV65!_YXW^mZh4Yr5oNyER*LLe|3GAz!=aigHQ|8+ zQu-?M-{8kkZF=2MZ4rPm6;_+8@20+I=sS4_M71XVbJ2oD&M2mg%uNI_7xWVXjX{^j zQTz#<;sir)r+(}fVD(QBxjutDe&Yt#245p4t2Jh!6YK`C)q$^UZuD*&`74qM+mDCj z9aA3Kz=#ZuJb_C*J$m-AcC+n@5FXWyS>4M~+L$|_ctOGK{vP-?1@E*>z6e3c_0>Qx z<#)td%n0DN)|l3O9TARP%iP2YdzAG38t{UH!?qe$iItIi8y*NZhn5R5DG@9RH22l-TKc93M*;5 zmrT?Ir6l~_;})^6djYMm-zF?-rsIQIdE^v*zXtE-=F4pPR&!gMA@s= zr1=Ka&_|e^xOmtGL#~7+YI;&u4`Vy@7Lx0gJ$Yn;5_LBRMglccr%2kYs z9r>JC347P?P{tRjC`(n8M%);sFA`;TOceT(C|D8l4g)Ig6|moEl2$0s7e((4C=%O%Rtq~G{S_YbHzJKC09}s#~iZw6h&1A-fAOB z;J0?32|Dr)V#ijRds*PDad#8@ZFq|P{x9}-KfiAn_dQ!EK>Q{A{v|v`?3J7kC_g2Z$iyojUbL~!yup&q0vs;pOq*W9m+aC_!o@q0GinR(jW{wCya^~NXRt})sf zovC#fBH3ZM`YIKbWL13xBeU0ap-1$JfwqaH#3+76=MQ4-*x)OF4hc_6#L~GX{#1c6KMzQ44j|tm1Mte|!H{8n#y!L){L7S=b zE(CQdKXiq+p4}>W0X9HLOZxtP&Kkz#3$7IYd#zWOB46id^#(exVn#E2?~PANje$ol z&WYveL3Oo(zhWAH5pdzly`$&F;KSJ>2dxm%eNnAHwf%eF^1r0)cl!LG+Q9zsoXp<< z&+Uw3-AN^Wxc;m4CUTPCOK_0UD{QPTj5g3O=RO9_MoH86t^3j4BpkWEZ++*#)C^a6dD3;GU|Q^!vDiohi$VVV zO5_sG_2MyaQn8VxQ?d0cOuy}4jyc=vz=z0zYQlqXQy2#6;3Zf5_y=|Kh46XL`cKK6 zV?9`nf~7fk?N-8AFJ8x5f`wx9(xJq%A;KKT8U}3l5*zND^nIhg_w&93r)2J^{Uyc_ zgMA#dBMMin%ITuYTHlRa0WZ=zqv|~b2OdWf@DFQ*alWcZ;i?iP49}*1&d~RCxd$3e zX8>pSgc@O-uWHucz-7`^)u``IeXo*xps^8gV4Qb$j-JHkH(!?fC=y{3l{}*EqlkEF z!x{fA#eRmGn4r@7zV%BWLgSL1`BCY?DXH{78!-%jA7sEFWWi4Q$l&~|g1hh*8kPvR z*us_lfPcRPWqXwUfNg)6ronLKExLl0_ds0bjcyci+v9~J8HLG-F<{)4E;V9S`b2#5oF15I~X zbgAZ<0J0JQyg6dc#y9qE=dg4|$ETP0=wg<2c(qi&#g6umU?Z^qP_T1@dkU9B*53hJ zgYgI*I>ZB=jv(wJt+$8;?Pwbqp)^wBzJqV|j&uQ)j*LSv1kI3i?qoU<*_4Er!KS+$ z8~zpVf$ema4iR?{F~(IO1C5l(OMpA)n(Xh7^812u-?@qu?Qz)pF2B!>`@XJUzV-7P283g>tTbL8 zEQJ$`tc%BPJ=l4$;zsNb`*oBt_J_5s@Am`$!0c3vRGaQs2l&a^&WD_Nf8g}4xCzFo z0=`1-;pX>Q;3FsY59DsRVQVVL zf7%(Ebds}d$hlR|oTRChB97Ykon^bcDOhwlitjrdUms?1N|R0gJL)!yc1D%;1*E_Y zSc4T90HIg&T@R%J%ttwgYArAkIu3Tp{REVs|A;rK1sjWH&W zY5+WUWko>eP6Xxf>9>v4UUQ7pMEZmsl-m$P&NFSqh&D#dOjM|7HbN6kn!i! z9`f%Fm#6G!67>H-5peM+Hsh$>9QFwB1_;R9ZY3j%y`Q}dFAQkBHy_$*wEEC4vcNxn!<7ORvVLIm#58LE8p4m&4LT^wZ(VSbuM zZiP66iKIsD_rmq6JkJTI+#lISRl>676Ah+JQ}+KEAz5UPhS;=E`mQ6^<@l~0+2Ng@ z&Q^t!1hBpK%5?iAfz(tU;Iw2P`>so+S#x2dK5r^^e=}Jx%k|vY(*>sn%ug+TMUGtm z2^%XmNXmO0TF~LZi`(Bx8rxBIa7U7_B=FMqcaz432HwJv>wD2e!|hW}a5*Qq%)+6M z4IhAVoVY&ZAAz2Dkf*K(K3KUZrae1@>EhxVJS})N`=#JQtL$Y*16U0o z5luMqI522}PHcqo2>5-{?I1RE#u;)ug}3@p$|Sj+awcxYgBW8!JfDjLzT8mJk?LDg z4;v~z#K~VABZwa5eW&B1s`L&=?#}le*Pe1uAF7cv)p6x>?>jDf7H=L0*;}wX#~5(7 z0w>y6Dv|mJ!)ma$Z?U|wP#g;6+5>14Z#77pIK$~~IH1}DwggYuiIPc2b8z4*nnNEj zs!FsD(+uqBc3JE5BJC{--#rRnaXh}?{Nd1|zx?<+Pnym{BTgJ*u-%%4{Zl8PHDfCq zN$b9PNh>*=*6HE2GLV+N2Sj{-ouPOBLudF;pPw)Z#Qr~ee!}*7M0m{e6Mlp&e)jVd z`T&j5BV=^U`3YY^8YehE;qc|L{2Ev{(eNdW&Bc;-*)LE(FR-7b`~rUHW<#hK{=?SX zNl03XW!!llJgKz-i!d63y}1o#fA?YfrD-^-KZHHege)Jf4$e)ju9!PTnI{q~~?n-~HIA{O=8A@Azim5WQUP_P*4%$D;S2CUDS(pgJG4X5tCU zWi2P)jx8va9qs?(e{nQhpM+*wIj5mn1y<$O=@tG67a?3qxuk?n_^1%OK2hF5++0!} zydt$aI3J>_^1jR8=vJ=ZQ{nA z(fe^hI_te2AW$u5s9|4ysCLg|?WE-Ar&G{)G1!}31W^p}4=RRc>%raZD*dcjVJ|GA z3rt|P6L6jSd$Yc)L1HN7cdwIkgU}{t_sOo5R=;y-U^AicL-1Y|VsKL=xG@s!w}Sxz za0VobGc>RT9}sKU{ysFYGZGw(1h+=*B(_ zsxEm0EDJ0}frZZd*bP922;N=UEmx=nNY)gUTbt3)cqDCIAGcc5Ey*5!r zWXBfSKjL`h_30P?N6PCA)lL6@t-NkUHMIVCg_PIF$f7Q<6(`%}l??#>a-n{C^z!-y zCfZ!<{Id{o;E5uvL@3+iOUBtdxzvj7;zRq6mJgy2u|-&WYMI~@XfP1c5Czh}@KnVo z+)MSnNZ)hy-PHFCeNWf-RCUMrka(N+)dwn^p_B|3A{UT^=AhBdu7XO{43(HRtNr|hPaS-);p3O&t`UPV58brg^Tqu@{Qc_utO}s zrHQLy5H?v(QEk8{>=zYGdE+I(h#pA84oujPcs=-76Sy&TXf}6!7~26w5WF}p55Ovd zqK^X>F%JcS*k9&^HXC$u+%<^7(N5bahm=6cA?pe-5SxObdNa4j+zS0SgtzXP4Vr%u zrT>V23tp6R#2)bPaR!#`yDeqmURo*r*F*BpMbP>f(V%@VLqU8U&p0jzV?R2lV_&4{ zKU&Xb8`(@}1%S2ri(#bOEXvo)*?E)N_I>2_EIrJG47YO)%ww8$m+ME$ESAvwa+KP zc?j?{Jq+ez!~ktJ?`hw8+{qp~v$hYMnQQcNu@j24SFx`bDf>Dc zCQwzaD#;@Z;iwqrIfK8pSS%I4K7bpx_6lH6cIov}M~hia;n6Ei7ktI~{*SGvtH|2g zt=MkhmM8WxDt10&Z955cV8QUO_$ruk@^0L8!-gs6)90c6gzC9EuwhV7g@co@w<4yC zC_~eq@6^5$e3v8dlt7q_FscU(h2YI=)_etiBf%34X)xB|S-i`sl_~tJO@{SY4Z`h( z2DMc1gA7WAu$XA)i)xHT2A(Vmk8xsJ1O~mB6!<3ak3Jmpfl^_QwT2&l5%b}f@}Zd@ zeq!6(V%iUMM4oIwYw%D_mI!YKQjr(9LL_I&J-A>g4%ThP83vB^>-Zt?-!b}e12TCP z>fTjFzQsJBf`ZP(OmnV(YF!ZK#JUP!Ryw_>QJyjHQ+3L7})LteJ7z5j@s0FR7s zF|jRk_!Ucw{J&ztn8e4a=)d#dT?a}=laPFU*@*7~o=0C-0b>1FmNfkUD0`#;)KQw= zI+OQ(U?qm*Va+(A-{|o;$8B<~5vtxkM0E!L#p12(Mc>u%d~)UqV{niW7D#K}#4MDC zonJXJ`>(U^L6Wj0Ze~N^W*!9h78WI^H-tJMm7 z98L#+N9Vv_4x@fqb5U&d37^yj&c*p02f|gt8m;7zI?OLAPj%j+DEwFnjWa-CQ1pG7 zCdK0CWcVF{cLt}Sy&d$QiA{8I+Lp*eW*!XlTcgG3KK6+?2{rB0@^encP?hTcs?h(T zMdU$HVn%cy(LgxOLG_rA>VfUq?jie*V$hi2%hlG6fj1{O54{#eKb#qH7BX8X3>iDH zpXR{FrJjY+^rr8)4Bvx|srqg|XXs~B-*ff7NZ(84J}_7X($IXvA}Q7$5z`*fhhqHA zop-}rG=+=oOxBZ2AY{@3_{Ncc=udV<`V(+%cyu|sUPuQVQxnSO-Ut|4t;dZMCH0|# zjSL1agN>zVVD&`E%GZ7A{j1Z#`nUZs9h@<{m1dAqIp4*)9_37K|2C14Fq4QxAIIUM zjqt7ukq{h%4t&-Uz~MNqDkx4xT+{1ALbJMQ%;+b*v~}jz;fN7AJbi98w&$o0E|@3| z#oxRM@skjrgH)~&8_nFL$A2@JD93;ASTEngo&e*&3KE3z-zR=-gZ7rygJ&2Ac-+~y z!Ch<;8E$H}aRYbqm*WZQr?547P3vm(oRktuJ?h#8xi>+YYSR-j(rXmb>wxt`%)*cE zi`0i`d}v$Vj5vJfo&ev%qu>*Hpy$U*WiyBFtmNAb_*7s zx`eM56ew1Ao=g|e<0o=WoqhOm?OA`r;gmS=?4?@AWzaU?v{ry+a{7x^yWwwZCOL!4 za4OR){@;&Y5LLfm3uam`!~1C~l!`6>@59h2hIRGqEc?9=l2x5iNRHwd2DqF*e%4bY z2S@feE*q|K%zn@M2w9cX4%BWqxTYLB%^=E+MS6D`ion)`g2<>iRa^TY_}S-2x~W~y zpmffJ9+4YX)xw1wQ&_K}u!gO_W1KMhEF0K3`NYG#!Au8Ep>k}Phu+c|TmUouRrtRl zy&>>+P}C{*E#pK%2uf z?-6GG;;8aqlVKmZ8>5tZdd{O|@46InVguySClKn=X^Leh&VC-jS9lzJs(Z7}U^7uD z{}hE%>$_3sSJK`|YZOFS5$DdGm^)wkG|PPL&e6=6ItFQU#QNqXsA6YE>X()z*!R$0 zkBj{zh>#gah1+W#KnzH9Qwy9=oQ4u{)kOn(9WN!t(6 zUo1eoeF{!cJ}y8H*MA6&y5Ni~w$th{Y`Y4FiqN7AI2k%>pLGV)cqrSe>j&!sfAW2? zu3~wHuZbj|LXrc&LnAlqg441P5$-0l;GM>FeJ;gYZ|7woo9w_`yuf}bj? z8$466&>d#}hT+kQ;^#&$1BxvPzLTS3Z>$|wv0s?3(^Rn?53e0ovFRwXnIFgI=Kd-{ zjbUQ+s`2fetPVfHFUDc1m0T08?Q!1}QnU?MJVZIU7MV6WQ-Nnyg z=>J=wHhjhQnlbCI(?r;bPqnNb*@+j}CIcGkaxNYDOC65tK^F}l^8tW;ex4>9)zQw= zykjaV$N$#nX^s}Nq95}-&0QrB-3f1U5LOpjHCBCaXaYn4M%=#4n!wn=TTtNlsu!|< zUI52M;IPB(G7tHlbKuAX&$O8Kn&1pnLl9S^tEtAQyV}G*)QRdM{FfqP6(>LaFD(d7 zI|7vl$5dknQ62*O65Kv85|S1-O=!ZX8cTEad75V-7cy@IuNDllkA0rz@2*CR{O=-M zw%`&YziB_@3EyIlaE7pewQQf-kqvg2ouXsmoXz?`H(a~cSq&J?LLOgh!6N~>9n|!) zPrw%FThHSFZi{m{w}Pm!g6G(HI|K#XF5n#ci7116p$zWbN@=1Zz!MTCH;jYl$Hx05 zAZQyH!9Et~qHfGJd=*#$i^Ok+ws)n)a~PwvzOjhb_mP!kqdLq*TN`0kfKG=3duQZ9 z1mRA|nU3`VNf;*%|IWHx@b5s{Ks!riU?o!0YHJMonh5&U zSBkoN1jmMw3o&Ln#8VwGZ zRt7*p-N4!m-wSQ#I2D79J9j@N~?gipVGQ15;F|4VD zEJ|#)r^aQ&Fn6GlqG`>}MPE;glw!fK^&UTs;czzFcpg^TBlb8w-a&taS}5ZiI_9h$ z=00D6wW$2pWMO>sH&}jQ^aHh5V2ts6?OCApWv65I^BB_L5Zbq_yFip87gNt`Ink~vR%OtJa>zQ5^im?}3dr%Qt{ty% z*^gpRwd1lsSy_^vRKGRnpcViReIK;jW)Dm%Km;d!bpACP-;Pu7p#R5|7svascwn^7 zg9i`>Z(c>q4j96yfjupUAatB21)Jv@FJ^0vc=1A;C!@Y*d0)llq{WKU&% zXxXO?ftTyHznxe-h+)`Y5)X=GT2kopF9PJGp7(KNv@CsbXMmwb0 z{<#6G3oj2G;CSqd5*@xT8O1NUU*v;(kXMX`zM{rsNBf4^N#qxu&cK+A$Nq?|0Wlu? z{pF$h$;qg)Fn!g*t&4CyL3B?E82ZV$J7=z&-G8R&xNu(&yh&-^e=!Tk=WGbh!WhW^>NbJ|dYK9PUwqky_2F^# zS=q1B>n`RVjfdgXRJ&8uYG>I2$G{>QlR_z%Ho%kl5ti)e1xHb~qvadz8{_ot-$T=W z9yq9Jr(hy!bV5Vuk@?BfCu0k{osL`oMtQB>&Wm3G3#uOl1N6p{Ggwn)_lFk%Hb0dA z4}OzXiFqOg&|wbG3!RG*zt}1k;4K=nA{T1sVaihHz}lU#gS9dtaW=gf2GqgPsU4eS zD1DTX^dagqmj{xEFm{H3u7y8E{%-WAsq=&RL)@Tk{SlDS5NyCmt|>k6at${BANT|Y zh@X?X&?40Q=j&_(#OsNkoN9N1RGXNJFZKtTAF5IBpI6q0oeda?F0k!~?jnix9?cf- zDa(VhS`&4eOe(@SFF*f93}gz1VqYTTKFGKiHt)?BT{3F>@Q5RZ*J>s4hYY&FWkAT@zs@)UDGkc7$iihe#3*c?}V&L%Tsp!+$k>3Dq zhdnp=z9eusw!ON~5=48qznf9K*DWZtygBT?O7Z__-!OHd<;@Yu8xB4pZ!kE8yeUf# z3{l>|at(QdE94EXQSxTUW;p^0#fRO8g@nVDH;2c|8#tF@V)6}Aj~UuGg#5_(x4!K9 zbpPq-g&;7{=e%v54qijpK$e_?DE_^iA$b)I20bE*C3>J9=?}EOO=$X=SEBG>>c`aC z9vU9{viV%uyPfUoHLDwsLn$si@i&yRT!-pI(2sxDE(H{`BVGyj3ye*3a zzibCXDHkBv;dJy2b~yS5Yd&zSOF0j3&;^1ZnLM8lW!bS|eS%Q+OYDY=sh;Ns`EX&>2%n|7sz0x*13R z$b}N2laQeQO+F5#Y``Ob2zmx3#NhHsus#wjvxA|O5(Hz3EW(>8B1ayEMXU`3ZdL@o zw+){|XMA%G2z-f2+a4#;)-lH&*Fj>yLS|WGnQ&&m22Ziy)5Ic!?|b?E)41>J?vS`o z;M?f>xcLIkN8hr4*kE^X1eUKnY?{m!s*b!6m)tq>WOGnQUQ@p#&$Y>s*S*=1=ilPU zTRT`E2sr^!AK1WUrdYE?ZwzNZF9}skF@xu&BE!z$$;k1fcI+>9DiV_UTWf>xeS;~H zSP5$(>}vN6)$XPOjvfsLa>Rr$3(wd(XkE$T3r^jZhSydRB5z~0vfe2P`=rX^U?hv+<`K(Bme^Tr zK;-%g|33ezSZ&YTXwMDn(aES|5&1%Y>;LKeRy-J;-|2W#`E6;9DbinovVSJO>&YKG zzfFjI)cihU#^=|z@4=qHDRrpVx25cZ%@H0ry{Kp}AZV>dEQspm(7;ll5!DBCA>XN1 z@)V@4EqD`hp+q=?_?Gq83-HVX7v8i=pOsM!nk>GGT)gDhlq-U_22eAYS@CI=7y(ylLl5FhF}?5eKKW!ITDgO&GR2VrnPq|@S>8! zrNzHRoq<#Zm|rJwF{1eH+ykr|_dqU0`?AEg{&v<;y72t@e6)UexW)P7D}LRwKR1DG z0vm%rFSc};fGS(yxdGJ~Bd+1wQhxpjX>n}$H_(Jkeh-gU5vbv|W6VF65^sTMsSiA` zRc@GPOt~LG;@*TKrpA1;!Q8H9GWUT!0C9%y9u~-Vt*?PJWhAg(_ybvt157q37~%3T z>@bcE4}-$`K*2dc3Icduw)GGqVk@@#pd{)H3JGBQq2CZj?Pzx&w)dzDPRfGz>^mLS zsWYK&ojUN*6#thnNKP1~(}J}et&*~11jid9jrZVV;l&u*cV+?(BZuZKCo1s%Cjj9b zw6TG)LVrzts4lUtYMx@j`JSNoMYR8(sxSL z#&U5I*yVqF^y(dnQ}8gluzKw2y0+(>!Mk3Njc$+vkd9V_$G3_eKgKQFN3$`$v#Gw_ z8CsKol(t z1W5}H;j~Un5wI32CZ7r>W6Uw^zZBK+mM2-6qNbr^Yh#-(`G--FKZ9iU^HquJbXVz%Ly#zshhtHY2@i<0t)3;QZZJ z20lsiT)?Nl?CpPIo4h#NbLzm*3j<@*R^>Py_Z{(078XD48Irb+H5}0@+sKx4P(T>C zz-!LJ0^WrBiq!{Jour!YA8$Tg;vBJl5r%SFJCal3rB!PTRUIZ#^#Ro6;3-Fb0h8lx zWi=ab%1EdSo(hK@*feB`=~Xow*S-Wdg^5+H($Dbx)a0yz!#VzoRl0pvLttNB9%duS z{h3HfA5aF#bi_)-GgpX>J&Cn+{wLrlhk0D9=C-vjjiO%ctV@8wkJR^BVHBU79i1gF zveY*&O9!o2!ca%aQXkG_Lq=kG73IGip3g^l(Z`kkd*SlRj2#a+9-Edvuq$!kNT$y& z3am7PJc%!gY@uiZ_9?TtyL^JPVyUJZ47m9;#G$Hop@L#^D2Ys*4W|nN-kmH6{{x0` z+esT6Ub<{!y%{Nrzfs%oRQ!L8{Ll1XqR*9!uz$?jb{2Ry_Pa-}k&*?G?^t)?6%8w2 z(&Mdx!`Jvv2F&P5sz0U)PnFJ(b?J3+P2zDcb-586`f-IP@4C41erU=gy z97nPq{G`Yo9y>B7>mwhbY7d53{|+F|j>Eh4d;F^TqsocySMxKVC_rEs5=GgitQ%A; zKc@QLvZmny7}i-Y0TkR8pz@pQfilCaCAgVL)U5cxbrb2b-Ppv+G;Hd;TIROi`_6DA|=HUZY52i~iYJyd{@)uV@ z7l$8GC3m4vuSfn!r1%}9yfA;FW-_th5_atRindhW)zv%*iaR+{9?DcROsiIcXit$+lvSJiS?YXeS_{Zx7;zK?F4m3?is!I0Ld* zr8AiF+n<6-K@=gCGIa(5ox9bLVe3%sgG!&?LVa46P^&#ghHCrq0?LTmgf%3`c#M82 z+ zzlgjGt=-J6MdMLoK?`vZ@i;)~Mmjw0fr*l-i$ z;}C8h$6bTq*b{K@^12<5P0AQ}eeb~I+Xg;9+dDF9uOHLmxFOVop0hLD11WLL4&eu< zYgyz(FA4A4a1T@;=(KKY_yal~h+~=M2i;hbAPG9Ywn%CMj9f932*RIj<)E=?vRN_*tX8*+sN?jo*$#m&c+LS5y-84F%K^w;bdsx=Zi&n0f`|m+WBIc zvh*Lr0sKEf!yfC-FQW4PD5h5byL?#958sXX@O}BPoFDFr`EZYXn8Od>fWUuo5lU(c zp2F)9&;_HzwXQ?K1h#KU*znYv9P3#CpyMjRJKb>=AQ%q&iX|Fwi*U|XXr)?n|oCJ2#o5e zR%cb!4SYK0yBrFRAd?F4y46I4K}UUAi{-)Cn^qwpeH|-)tsg495N&&{NrD%ajQb%i_gXxT4fSH5t{3&BYaUYoz%yXBh1CsX!P@=9$Zs5j=I75Tnsbr&vBvy@P3a}o}dDsQh9-N1xiJt!-P zsOfr{SFqv3z|#Y-uiKi4v<5zQ_|Bk7KOOGZ6N(29{tj~oawSPtAu=4tEV(Q)I+nEZVokt6w&9bv-xTkwP9=WoL)N6nwTz5&bP=|&^o zEwB)t1Z>JexQFuDN&;t*@5?ZS9=I{}mN5fr+uBO&5p2$CT?wiJvnTSiuQ|AOw{;jv z!4$T~u^|Jwx0m>6zc=e)e8n_iirQTvomE;Gacv_AJkz>IK3j)@RJ~t-_f#f!Src*U zFbJ^j1xQWMzZ=$%tj=v@Jxb<#hyX*+#$9;iht=DFnIG2c4-fIfEl+O5Z5z8A3XnG~ zkN$cO-t^y?Zuq;cx%$<5yh20SvjDIM(NsP_vVkWyyt2Bd_#moR1|E^;76d1d=C!*; zkG2f;9u6G4>5s3DAhX_vGYFukl0SP89!<4=javq4&dfZWG{tCoenC?TcM%a`(aCpp@8?62G{zU&54?bDtJ98){gh(v^(X^qITM%YJpcO*gfTC%j z$hsI2NB56w@8S=wd_6wF0#4)&5s_teXT8x2MW2N+4h}Edh}wEm9&pOl%^Bz;czR_s zA#q=-?~VHI)b}cVFV*)Veb3c*Q{OSBV)e7CzJPMWhA!#oxU4!PNAX^b`%vv0iB)9A zzp!RQOueD1!oQ*%P~qBbZ7Y=W0DB7=f-LH!ESHvJxfC2`fuC3{Z^<@#Ce*7BC#!x= zyu7WCPm;o2hEJ+-p4xd|4Y4H=vU%2_^9%18u=E;Q1%A9znA?7WIb+O zXl1xTKZDG%LEiy-@IKt0AC&j2Z>$SF%pB{sZ2eTdz6mqXGTU4UrikGR@N2%av*(aWN7}*-d6E||iP?FQuC##8zk==N$f=^iQBaBME z2x%%lBq6`x!^`S@Mfm+I^K3pWzzKh>ZE^KK+WrI^FqWzbwV3s}0G-##{c9kSCKZoe zyk=r>`lC>1tl40-0D*91%l|SDlq!3|w-z>#dEY@kP_l97D_+h~+lC3Cuqq~f?tFxG z&X-nmk0a?oXM+A}xWuswr77X#!!%4MC#al3C{kIVkg&|1`8{OU3Y~&(@CQd&iOVHD-vX4mM zQFq&+2evhW7OOnlBA(ab@v~k3?D>U_tZ9LNs1`GblUOlNSc_@3T1>CiVwz1x<+yRs zid!RYG+ELMRs8aN!rq8{<0_W6I#i;kR-Y$*!}D3Em~= z<~r`fc=lPmw%VlB&dnOQ5yF4NBY1@boOQv5r7-dzrl-&(Y(Y^sQ0q(`?TPRcKqi2i z>n?7{kUh}yc5)HTDu*&)aZqRFqQI3*E=nQVhGw`9V`N+FB*tKEGYueh0ldZ{BKY<+ zI>Be;8n2e(5kxFOPG7{}%6D3Q-up5tJZQZsxZppDr9FTG#FLH~bFTxSL< zzw`q#?(RW!j4Zz>;{tg8+qua6uYhZW_6KE8fW9BVetWYqzlRlBvz@-nWaHs^r8XyYdU4X4pR-AcN%!Ct%(dbM#1Be!woeS!vM-FS^DiBlOVedYOkrj91 z-9Czu&1^16O5K(UqMeSp$mKd<*4|fWk78`t{#KIpM=-c9Fac{=;ClT>=Of4nf3uvE zpRNyOZE6VR!=vOcGM-W8aKAJ`V1EKG)1w|75Vj(hGNle{Cc?~LVAh2ikmv%|0^UoV zp*vN%Tv-Lk^y+~(XThWEJ%o$m1dWx96lgz;$shZ0WKl8qpWh$pL&@g(Babrc0r=X< zSO^)tz*0q~hi#FU*nkEPyGdl*ajyeV~oKa8GKhj#sS_FVSqB-Rh4k{xq@ zr1ePev+s}8NS+2^1BFol?Jz|;suZgjX`Enxq&;ZB@%{!P{~D_UFk~ryEpnogrNZA6 zGt@8C<^8>G`#+KvgxaSkV6tFdXkr#x=*sH)JnXR-DShlp_~%4t(#gexwOFI%sNGQ? znzo(G;CPz!!0luso6{ld+aPk}EY?U8GrTs?C2$#tb%SIhOQa=l5eH_NqO zu3wYudb!>z*Nt+$O|IXN>+N#gB-d}s^)9)7ORo3I_1kj&u3Z03uAAlhL%IG)u0N6M z{c`=8Tz@XtU&wWfTz@6k2j%*(T(`>g5xG7p*T>{KDA&j3`lMWU$aSY&pO))0a@{4@ zVYxmh*WGe`5m%~#=lSo1GPh_f+lBk4PQDz0E=J%?z=BANdwT^p6|)2192v^fiX2F~q5X&U%KhPwH5wn<4so zbl$?y)eL=)A!<0CG?a|YVQ4o)GZ-3SsDvRl#gSZwcyQUs`3zMsG>IWEL-Zl*{5eAg zLvJv25b~)r4Z?C{KSMK%JF72;%0C&w8hKVj$(%4f*OP%T6Bf$LnvP%}f#3|+xcH$(Ld-N?{o3~dLcNqFNhCX44 zd*5`XL5&`{jiIv`>SrjIp_L4kGStP;+-C0wHHd9dUu*&hIy4n(c9{40dx!C`_`Df9no-Ri%$qP z@$2;Y`pTzFS+#0aVT%x3*y~v_rAuYSJEgvEcJ2H{wFMwpqAcm@a(TU`$903>?Lk&s z*O)DRpr@^+6;yV$tTKB&X3GkX3*UUbq<59a?Q{36$Tz*c9llj99v6sgcYA#vcdOqQ z!z`T(6M2pX0J~ax%*^UVX5FGp^Rntib&K+WGKZtabjZ$>xA{SX5E+(@BpZVE}H%fj@6ymk=O*QUk(8la`s8 zxrm9P++3}uR2+{a)#~Y8AX=xx&-Z*J-x5_*x3n(iXECc-uT~)&MV< z+U4#6=iEKuFzM`Y_q22&Z>~1KPs#xVf%ukHglb)r=JuJZI$b?x4@!kO1|?}}9iHB9 zbNTWPzt8V+EniN4^m=?|p9g61wx^9bNlWv2)|98QqUi6eFNK=;7Ozwv^^~ToXr17x z^>}(cF%d6o@w%Lg7dI|qi$NWUiK~(Kded~s+uL@%%NKs~xAu8@+fZ`hH*3N{a8o$w z^4K5!o~|x;Yl+HYTW?pFOELq_sXX?ybi3MpeiTJo+Wg*jmsx2>UghTSRZhOSEXUo` z=l6LL%<=fU_$tTO;#uMHG1Tk#$;YO=G?aZ^yQ`(EYYj>^r`<%Tca^kdluu8~O81Hu zA1YWc8e^;9-PLZo+EJC*PV{pR5@eN@_KfD_=|w3p&Pumy6$Ai4U63P%rg@p)#}fCr za=Z`{<|@bv;Jt{{Uu2^LB1yoD?=G_qZKt;fq@hXmb%|_gcX^e-nj zPq|k@KDb&|BIha-z@V9Ei>F9ZX1iZFwyG1Pbf5&$LJISU-z8`zTb)1#B;EclpPS9f zZa$z}3P*@0RSR3lGcXRkXz}@6-F=ium>$~_xDhML!hFV3GVjT*-%Us7IeE>AQzabE-AKekjMhXYh=pXi7ZJaAs)pg3KAO` zxq~!%Bon&i>k!r5b3IB4#V>NWt+%JcFS0{ruFD7U1R1oFMV!{|>OgnmYwKK2aod+m zv5}7!?&@%_&eM&v1N`(scJ;Uly{O$jFDqeg3=CVp#|1IbW9H6j=^~p5pC@9${;=5N z*YB5gxq89~*gQx^UyH}<%JsQc`*gy@;6=l8gJOAKi0bL~<>p+|laq%?OjNZt0L@25 zRH>mIMn7x5RhrA1 zD#)Yr^q(fdrk(fW)(hQcY)(kU3)637`M;FB)(95)di(0o%tbef)XTmWbmx+gmLcqS zb5*gZ#sqOJ{cXO@CM`_bJTCN(%ln{_<+k>=uhAk!qsht1nK8L$!R*CXHP%8u>F%1D zHpA;%)8(3(Mqu+sNwcH3$5+tN((UeAQ*L@8tt%q0y%785W>I0Ot6RNAPq4z>Q*KUk zt*%I0o7PzzjbxRJgMo6$QBQYE*ElrA(~7dyOG>|jmM-@SV8TcN9ErtVB)Cid8Qdkr zy*AC~i;iUH>PlDZJh#u;(sq45y7Qi1XoPJpl_V;J&s88VNcbvfo5WMdu|^k^b3s=C z&FXr$uK<$J-`(RaH(UJZGD`?JV~XY|m~CEclCMh6uWKKc+N4irE4!#W!|K!1{y<@8WE{HHaff30%gfe-CsaO zrk=$i6a_iOvKf^c`c))Y!UV@vbGy1rnj+7`AfSXDTNE{U=1j9FLK5SSC#&7P(roKO zRj;&pJ2R@SGY-`|sr9Jt6ww$nd7+8B+GEm+O^5MNn>;OGXUx33ukz9_ChhmOsh17~w)o3qQH6SAC$45PW!LiV^mKj%GnkrrG?Ocz?e++J_ z2JsnqnX3}AWn&Zz$EOv;K3hye(JH*I*WHtA!)xh^;q7%T%iI0keYvVZ>8x-BhU(@G zkHrcbd(n61F7vMO7D7O-Tvpr!J)uB`M>qIgo;4UJ>BgKtu6o&w;oa+NM`kLcG1oQL z!eZb<_w5~8cgjH@HWEfOdyj9F; z<6sEvkcJB@4|3y$Anj@Ig0jjHup06f+GE;S2wUPo?QQQ}KDTypuGiJo5mg}|4O|#% z^KD@t#wN>(n#@WxS zdd_lKKl)&@aOF-dDv8woSeQ;%3;3R!Q{M~bV6emC?ktM=a6y+KWjo<;T%uP|y}7ZU z6;oqq<)A~+8$IkmGEr;_V~(YKTG6yv^um%8rf$<~b4e$^3~Y>0rs}@kveXl*V6O)j zq}6WUa#jqqf$>cw%np=86l7(52SJ@>xu_wPW^7-nMo7^FfHNGm;*pB zT__U8SXBtiko{6O05PWJ=0Fj%?R_494~lpNEGuTVw>-N&-)!@B70edvP%Ba_EG%S? zoNFUeWSEN8ivOj>K?gXs9GkgjJYzqJ&e_cn63jY`o3M?H(;8Mzl0=p zpMZ%G{wBc1Qtsl!i0|U$Xc%8?R_{{=)%}!yg&;-GES$wTAp8;xg&@UH2u?N>f>VrU z`JQ47%KdahA;27xP=Mt{f&eQH1OeU)0xVS%1b7w%NL3JE!s8e-9)dn{=~u!2expC` zXBhYv_b&R85y!`hfT>6WWi_tp}Zr-uVY1C#D@qF9pPx-KXcOm zV}N0*jF{ZnuhS907xmk>xqn~yr{9L3#|0Q?U;nt*;TI9S3j6<(tMIkzjw+kK|38tJ z{W;ge>A_Sm(Fdl{G!+BTE?C=w2VR}~> zGFNM;L4%sOUFrTRhJKj20x4qOu@TF#SYcL%&M7LIn&fLi(fB$I8(0i+`hgSeYO+bp zS+G7JdCdN6T5782GRJ-Gtp*3~=H-hP%*PBycb~gUhHx^I+=>}kR#-LMMpY$1OPene z!kit|{{l<_a~=uR6cf;Z_xRg5OYFrd;Jz-GkzHH_Jv$o})-HEnZ*P}W@8cGC7>acX zjS0MLu}7_-OBa3T3QzQR$uGXDg3d8=)cj*F%`Y-JW*9Qv$$3jmiE4gEC=&~^nPbFL zCOI_=d^kT+8P2OE7^@5tc1iF20j1kbpX>3a~7A>x> zuQjfyuCJ>xI3^<#kID>HQ;6aes30iHa16;3lQB&LQ_0M0JB3a+r^8nDdSqHOEE+}JVa$1>j5{;K?=#EIOe0en zfiiVFjCsd~qFx~8S|hCqQjo&7ynK1Xa(wJs?uOCA<1@_Ssb>Dvijv7NLzkNQ6*G#9 zCs(9RH=A>26c!xHS*`iapsr+cdCBDF{PtO`cuFg|1Zfn2 zf*EC#XPQ}arkZ(E3(F^izTpm!7-_~AyNmgrHVNO~J9$m%LvhqtV$tp}MDK@`4ZF*LliC~d=`ShZ!HU{v$ zF|&Er)M;6*`q6A}Z3FVmStTV|V46V9DlW}xE4;*hZ&AhxUD~<0<+RC!vD*zUQoh8KtXr7jxKNWuxI}_ApwUwAmrWoV`6AA+n z+b+#&EXmAo12t2#&=n9xX2~p&Su&?2bNVcNyL>uGHuJyQJ~bg2{dG-LAdrw|6Yl4 zZsY-8O+Dd;#|L)*9bGL-2Z)y|F+JcoXv0s#4JKtMh|Oiaa8-a6qsd&RI|3L8V6O^W z`{1hqX9a(cc2#mg>9le$oQ>h#XtW!hpj0;U0fW7iwXe#?Ik-L4npgU?-vr zkS4%>nVSiNznB|gtf;A52>H_ncZwC#q42rYMY8~UJ?6co2cC2c&|XF49p;?6`dV0e z#iMGC5@_1{MLNl4n$pTB6-?}M&~)Zg*kKx{2cheFTj>BLIt=`Jy3BAyC2>8l{cBRZxyCwTQNudRR5dRNeHHY}(C-(5Z87bfZ%W-?cp zxpXhYXQgBGsyn4VIw{2SnTr=Js8>vf0^o0zUO`17eNbl6CCgoZlz4D5kgfrFM+NMK zQ_e~hk*;MGW(U*ZczaH4pxDI`kYv*G;y!_ZG?*b&1pusS1<} zqWiPnDX9SR)jU4x9-5AK3e+1i!rjx+3urw?hy=uetE~lOQ`fWWD-u@TiWCldJi!*m z7SZnNf`VaI*)tWQM8jhfv!ZMa@EHg@dI=?hH@B-rx(MhN(PeqL)v9L!Wzl1U}e>ggV*#Ii;hBfD+Y@+d+ak}X>F zu8?*O&nm6u>MXIJF0SV^K}{X>*ilxy&OvJ z;w6iWW!c^-*}f*zm{SemUsG-x(2(1W?84#>BYUblI~&2N9pR1>qsul|XKxqgo}jE| zXSd~0&}YS<%-24wYzi0(|kA%3aT><`BoAVd5G zY7;Cxqa-IbF)V~Rqcp7wbVI^5P;RtB;)mh9a4Blx0G&?7nw{~CLKVTB8DUWI=~~Jn zHHfo~j3iFoB?{UI>o6sbswj2>_64~{9twJuaV017<^TuBwdLj#rC?CTi0UKg3&EUY z1IlzDYbm>aQgeLpwk|m6#=>@Ak8WM1kA#px;Rsbi@rxA3XU!H`>?8F60qqO5lC30;Z!xf8BMN0c)g?O;432J@ zsw7Gp*$lH_CTtNDzUH%}# zytu%$Yo3yLahXRWV_j1w;pn=8$Z?=y^H5A2v>Uq9p*CyF&I$}pD3!+XS=uw%$*(e8 zJXXcj_DzXEg-%RtC}mgyl^IhoMArnVky7c6ustqH!^+I=%QTl^{N?JZ9EEh*d8w?Ug;y)3UvY z-R@S)Y7~QSG(0UmlpvLv^$RmagOfJCjIN<{0j(@9vMFfoU7c^j*B_3al|_Xm)0>pS zC#^jizR6gN8iaX$6yvqfRa!iV<#C}3!~5IlLUTpO1=SLgCr4yCdiQet+v9X2r!vQI zLsRi#-H{7G?w+=_W+uKkF}UYzMeOO_AK?7_Qz9RMjk)zM)n^ z_JNUJ6N%-)zKk(6%?50A;weG10SAQQ5DF_Ve44d=wsyfB>1(nI6bciL(ir2xG@ON= z4udmj-W22zl+-!1vd|`sa$|Ar!Uot!x?7ENmd(>03&-qG8|<+bh_&lFypq&%vgNw- zil)E_(;`imE*HQoOU_U$RdWV+)Vzp1qW;2)9+e4OJV1>LBLmB6Kd;PzmJGoXelPMQ zE)jW`WA_iDYR2^uqLzxr<$^OT@P_R%5zINZz#Erlm_A82Op4Y+VqeM(K^R17Q8r?M zwAB>#Nt15B46_id2rDXtfyqL9?m~Di!w5V)5<+clIwmZJs7lGCQD$Xt*GkrJQE4^t zt2o)kdWL$^*6Ts9;;TRa^}EMUSXhduTmaLSN9>lAdW=+-c)s63Vo>G{!Adap+|D3zELR*sRA5&OHR7mxfZ z+JY)@H5mo8_*>>~hbR)k2VKKfVA*~5`aNxMpoi#yv=)I;jzI>fx0@sebjpqyc_Cs8 zj~L|i(r>a0A`$}F6Z=BdPpq(7qb9TXEcy`@cvv3Sp!Bf{uLr`+YYGblA{wa-RatOc zsHM?(T8)mj9$#1P96D6asmTjJE>e%wJ3p%J=y1mB2uUmj7cRLKq+)5PAVEfp~3OF z@Qj0V2~25st(-zV#*kIa-cF;S4F%jH<|B-2-Qp64>Lt*+q%mI5!(W3z_`P;P~c4-PfC$uCaB_tRL36qV)gfE_)oKSU| zVJyW5{vX(C7@gS8iQzS`5?qBDf1+`@F%2>C`$82ieUpro;S3`o9b0KPpKT=ep9A-t z^Nr-e3k+j(o{@AQ&oCMZ#0t3 zn~>&OBXM{wSa>tiT?e|>8AkegBYD#XBVo%1;JnpH8om{2eBDUe@^vF&@asm(mW`n6 z4$y&(cn;iUBoy6k7@NKYTDaNc=fBT6@Hq!Q=fLM2_?!cubKr9he9nQ-Iq*3LKIg#a z9Qc1d2h@1@RwIiGRj?+g83XFgi5N#FVT_q%qzoowT$*eoZ^442^e-3*RTz+`r(!Ib zYNTvB$w+L(Hs+g8F%mbOYNTw&c)R~hBdPIA7}I7Td@jbD7{p^7osvEoaVHxo`zB+2 znPVhx&c%2$-$?E+zFJ02`T9r3CUYB5)!J;Lfo?x61JS3khldqR&P2tAz|~m2`NSAB^X;S zNJutKWjmRKZ1R`z)rCgF>hy&4i4#&c;S)?EVyCIvhphzh`vPn*@~b{I{no_Ur+lGt zV8S=P5K6f{`3_b!fv?BCk6SI`w_Tyf?wcCEVLUuc8b$fiHX`j9uaX zIpGf~_=`^fp9R=g34d7AkFfk~dh{dVl0oa?Lkez+ejlb=Ka(H%%#+49J3fDL{2<*(X#qo`J9|ZjU+}sjBUp(H+2a<0`i4d=t$Brnt z8%}_i@Dl;kXkhzH{MwW8fROi zPXwQw4EQf9c($1s_&9o)&uM_SH2m@SeGTA-PgZze&}fgvKhpgT!0*#||M3~%9|ioD z(-i*A@$hkU6aRj|o2M)IZ+-^8oQs8>nzr*Zo{PNf;nv9baSQ0n;iBt5;HvTzzCXpo#npf2i~ZIC4SykMk)NG@T)qg;e(S)+ z3ja4Wc(`2S@RM%#TaEb&{#)_znr^~<3b>sb?$mfV{Y<#5Wb_Xj4pV08XVV*{Z`1=W zwLqo&gLt^3(bp9Z7sW?z_ipI?n(=V@ndx2wxWk%{V7>a;eAJID@AZJ&_fPQq zLBOXs9-rUD`zqi{HQZlydSU*=l_TLNqBA=DPr%Or{8rsBbF42vJAX&P-v#)LMT+hd z(Q_ibY*6EAicdGHJZnHu#uAm@@$@Vy>l46{Kdd{}Vui0-GKf@gjC z5dXOvemcVPv++miIn>LlJ_B40;FfB*pT^^hYHwYD+o$2a91j;&@9zSfrQwdnPx9$e zzzu7-as5(=sA%b$?zyVKUb+n(v7P3HTbsqGr)BLF4wE@-4>5eKeIkk zj%@l2aE}7+u!ghEreVHB;d=w&0~!vdYxT4F7bQ0)qAZ*|L6i#@V&>_>lM>1YFTdg>Uh3@X;>Wso^Ha!|7+{ zCmD65Ps2TdIP$ak6IUOZ{{PwD)dt5|UFZFfZ5d3m@zBIIZV*9$A;ex2fdzFz5E%p* zve*uFjA2*ShhID(_xbTCcuD1DEYH~Gd^`_+ zLHXYAFP7|@`vCg!KKQvm7C#=h_I+`$W*n~_2ZT4@b$Y)2DgCEn=Nk0wHgEoY{k5ZF zVoZ2XT3(fL41?eLi16`PQZ~=7@BH*AYKqGHyyf}szmK49<)4YYYv5JQ{*gb-Zjwi+LraJ7N z0DnyFep0NK=f}6MD`3kT|3=I6j~~3Ldd5%Rm|hUu59;uf=ZCD?#p?#LnelU;j(|6z zyk{-Xx8L*cnZ%z<|F!ljuG8r}A1LpDwP&tVjeAPb--&GvQ?Q^#+eh!!&fA#^4$2r8&TfRVcTt< zJu`mt8E0<&D;ZZk_YI6Q&nTaBJ)eEXnU@_D`xWb9=7aw5*}%B+f2rncoiE7e^U;y7 zi~V~1=>~u7Y2iO@?N{;V0Qk$Y!mr1lBj8Ufzn=L#0si>k)bBsz%#(jB{Ceh-apoi7R1@K=6Q`2S+(r^^0w2>dDK*E8N@;E#Pv?B6}l{!{CEz;)+2xG*7heo=>?8^FnE z`sjL&i@U&292Wa8;9TXlIgX=)Bs?ShSA|_ZkDGaGM*UGpPWkxVXxTjb3OUXOo==s> zbA{VHp0P`Q3;3ho6+h0#u{R%|*Z0vQ!hc8UrQ^-q_tEbI;BWc9@UOId#q{Gacq!%G zQitEX9%P>tyXWDv+iHxHeyo7a?4>t#RdHm+QyaayZbM^5#&IX=umH)c+$9LUld@J`uvFjZ-rFGPHw6__&3FUpi zhCTXu7kG*1#omi`jO!ryfft1Tuy^C>tw)vn=%e5#UlKmPq9>cj_g#10^+0)@HF)&* z!UpVbKN5RivAinlwhjD(^5=Wsg!UgGU-t_pf_9tdZ1>OQykST}c^_dRH_xu1fVbb(e7{lK zGnVN#uYHyMgMJ16UHrmVHf8hpzWYe})vCO+EKf20e-zSIhrJ`>yUdU}8&m1SU_80ok{W$f8^mkCKl=nB^`(5p* zYkX69r&yk1+UtiD)!q{8zt7$Q@TSz>McUr3KgW5P_LTRojy8Zyd5%%@;v$M@%Wli-dx8kkFSFA?y&aszK8RD4AS~38ArwQMROeTxNzs= zRl?t3?J6eEosX5*SA)m?c|M*}-hB5F^Q}j2wfObn8vW6)cF1@gJg!Gtd1uzJNB_AV zqsl8-p1E&g|3@ILQSo!GINWjY(#os2u4q5B$MqPwTCQzLLjvc8&DAVvc@!eH>R_Eqk2Dqu|BVzk1?+OK=<)E|UJ|iu<*IH?6#i z_Z5A|!8Y(xpB8%+&%@1mg!9hlY>5`(AG71v>mkQ=2)vaS3-1NXt77*U_~SYc{dWF+ z_Y+HS?#ig$is!Mub!q``MtQf{{*^~Rw}BVEMEtCHPp-;&`T_9MYlUBN{WkkO?H>j| z(JK6kzniL@XWTvRrNUoh=fUSUpCv83On9HOyejkC4*rDB@0{bYsfLSE6L|j;|{7#`xA~o7k_|FRQEz<6C`K3V*)8gXjW|aT3ozE)# zcJRlq6Z`eNXEF@_vKxdy-+L_0@b?MuM{X4U!*)J(zn$+oHWich74a7Rz7+duhoo*2 zUd23Zkna(Z*AMB~I5&^`0k30`O~R}AenFLaJVO3v;Xi4|S>?X*1o-Kjh5t3XPF42% zW^f`~g#T0>{LSE`KQH_nE#LUVdASFi>{j99Cy-?G_IqFa>mYd3%KJmht1>UVj&}b)uP~|YE8b_RGTsf~k0qqP@7ez9Jf2o|O8awdd&L}AJ0w~M zuOGZt<<;76XphHJQh62EXWxAp@6#vevB!Bk1_^AJaa5e=s;m?53$tCqr!Q{v_HW;L zg!hFjyM=d}b8Fj^rN&zj257@g;nAn>X)O&TG6c+_F>nok}mwzaF2o%lpEN@{U@b86WxG;Kz1} z-TD4bBmV&TyM;gB`~6<`)L8Do_(;gL8Hb(87~ zRJW+UTy=-)jjFe)?p2*seW&VsR6nSCO!Ze)A5{G<)j8GAseVcIE2^hezp46t)e8$U zj)>~zs+(1>Qr)WhD%BfQ->f>JdY9^9)n8OSs``&qKdSmE)mhcwQGG=93#zA7|3vk1 z)o-f~;EQ-%k5g2iuKMGuSE{~9^*Ys8tB$GOs=8bC9@QhN?^gYQ>OWDPQT;X5hg3hK zdQ$a2sXnUuRnwN@tG-QjpXx!?cd7mZ)oIm_ zsD48AU#p%_{XNystA1H^LG^2@PpJNt>c*eSc$TVOq553aQPpjDL5S;E49an9k5Ml^ z^q)2A*|whTt&rG%SGCu!2>}A{Gwqxm7T)=)y*m89<}BWCYkj-nWpIM?+R)yJ)_*~@ zcbd-OMIS%!DXl+f?4^+9*w6b%t^a3ZFMxo$pZB)b|H|5Hna%qYE{<&1qS~`j#22}| z&m70CTED~a3V310&wEJg*~Y&`*Ujen>;5O7nHAgLpVu~`>l1C4`Zm>Gy{8L!fXVhv z4~ow26dm0qx}Z9sDt&cMkT z_()qkzV*gULoM-*J;^m|;+x`{U$cLG;HJUWw7>eID5_n?1SBj-A`8M^CL>)RaHQ_e z*zJMTSV%xWfcu1mA^PDCd{_!|XxG`bJKoi|JHBII=U{grH7P$q_Q3~1HbFh|^9?3l zGXiGkAV5Atq)O9INLGVS-TV8yLD{!GzMa`?23?!2&Xt=63v>G-Yd@F@$`o9`X=u$w zy|5DR?;IMA@9kY5yS{4xJ_iOz%aj%}$~9?Q)8!hBm5bN9j17Z5Y(rZatzvITJdHGQ zyW@SBh4q-Pz~FePR@Ng53UY4@5ANN+e&h9Wd&5e#N@)b3nt*LSiGJPOP$9l0jwrnjWjpyuXJfo z*1Pgzsr*umc3>a!q_LT+n<>?OW)1!F%|R;U?YdGm;Hw+;*LhB-ZJ~5A<}V)b_mGjA zO~Y%}#^b|%$n_LQPP{nN8Fk5Ol?bizjoahHgFQW1Eo7%-+N>Dbm5Z4|1+9^s2s4qb z(hiwBwB7Z!8&1sGuy(tg*A7Rpj-``#bj_-wU#az$V67WB404#W@30B_o%XW=_(t$C23%XBV}%y@r`h(YRVlg}EEV zyGA;L7%t zM=|XRkUnmYGhB2KSAphhZ$xJCOIp}yMhXYJWU^C>=o?PB-Yku30d`o@(+Y?8I^V}i z&@E)91ew(c^l?|Pe+ap;oC{gvVdPNn!nuHi2^Q?zgFJ4s&lBF>TOPtB3p5oH`FV$# zzZ6KeU_3s6^DPePeZxI*W(~yc%E!F0<^TDOXs)@f(3}rv8?p_NXg-t)j zQ{h~&tr#o>vkmEBCKz#Cv?-!8jQ`WYrqq(`qCzCSIGK!Of=L*}&o#FdLb0X@{vk6R zMjzowBo=FH%Lbznlr2W%)Tv;lL+M57aArXvoLdO@;Yk|*HKFf9D4GixrMQ4EFH=;M$-%Pp=c(UUV^rZ@}X?F5KP1pkw^rS5R5iO6VYfs2-kA3 zgK-3N;R0;5wG|h@Y6DC2=-Bn)P=URmuDF0bHKi727p6k7LPIvxl*g}TXW$GzJZEeA*2=6-=bV@G+PRffg%-iuf1J-PC!W z7chmK#yos4!lUehY&aXvhZ5;vt|1eOBvN54cs>}7CSVV2EOjJN2t_z0k#sP%AXz{& zZ^!&B-myWbIdIkbPP{FIcjh7CV1yrCoRi;YLd?+%JGz`*e$4L?`0?)=yxZWr4gRXZ ze1`A0ho94)h2J!onZx{i{@$`5pKmaq(fjLfFu2R$VT12C_%VaOVQ|jiyuo;^Gs~Y} z8oUZCB}EuGwuHeC8O)XS^ItUhG(1c8*T)=Ap-8qZ1}6;OVelS@1L#GzI}E;8aLN87 z20v~169zwL@Q)3iHux=r-!+&!IGic@yU^g%4CXtLe*SWU&ocOYgI628*5Jzx<~x=C z{x%rA+2C6Y?lO3n!AXPn8=NxuK7$`L_+f(|Gx$k^zi#l~8T?&?UoiNn!9O+lb%Wn9 z_`eJe;;iSN@5Kf$HF&wfXBm8+!K)2kYw#5YuQ&JxgKsgo+u&UWCk-AkIA!pt!4DbC z-=_A@*SNvoH2Cige%9b08T?~|e`fH182paG9~itC*EhevOATIOaI?Xy3|?#SVyWj>44yssoE4r$A1HEP?RdFn+I&?;P?<%kMBQh48!AeBbXkARmQ%48rR#zk0MB z!teI2fbhG3ABXU}6itw`AfJGo4LKKb9;6v^4rC?ddVpB z+yQ>ylE3+|7Sam26ml5^kE`AN!S6s{4!Hu-2DuV)734FJcF20j)eznfbU?0!TnD)x zvH@}fgztWT77~Np1lb7T`)ZpZyl>b7;ro?aA-6!bLHK3yB z3)unbgY1Otg7ChhA2I;h1KA5nLVgc22pNK4OHmr}&tk|0kWWJJNcy^JCjLt4X9M>!G1%qc7`J0u)zrwL`-%{xi^IRj~D+MOfD}}Q|y#BIMY`0YC z^8w9>5X~*smczIxsu91HnsN+t-oUMGFn`3hc8eOJTGya=G4%|Zas_tdUyT^y1LLFdUKfdr_qvE^yw`<75Rff361fD27ZOwxPsM$N}=UT`wb zT;V_xj*M#xZ;3<3IY0&=`C%v^AxHcxy$traAfp#uq;_G&cqun{fFHd;qWkPc5aUB$ z=rBGcF+=VQ&{@UqpbFTP|=%f&6cXZmkvV0GL8 diff --git a/platform/ios/platform/ios/resources/Base.lproj/Localizable.strings b/platform/ios/resources/Base.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/Base.lproj/Localizable.strings rename to platform/ios/resources/Base.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/Images.xcassets/Compass.imageset/Contents.json b/platform/ios/resources/Images.xcassets/Compass.imageset/Contents.json similarity index 100% rename from platform/ios/platform/ios/resources/Images.xcassets/Compass.imageset/Contents.json rename to platform/ios/resources/Images.xcassets/Compass.imageset/Contents.json diff --git a/platform/ios/platform/ios/resources/Images.xcassets/Compass.imageset/compass.pdf b/platform/ios/resources/Images.xcassets/Compass.imageset/compass.pdf similarity index 100% rename from platform/ios/platform/ios/resources/Images.xcassets/Compass.imageset/compass.pdf rename to platform/ios/resources/Images.xcassets/Compass.imageset/compass.pdf diff --git a/platform/ios/platform/ios/resources/Images.xcassets/Contents.json b/platform/ios/resources/Images.xcassets/Contents.json similarity index 100% rename from platform/ios/platform/ios/resources/Images.xcassets/Contents.json rename to platform/ios/resources/Images.xcassets/Contents.json diff --git a/platform/ios/platform/ios/resources/Images.xcassets/default_marker.imageset/Contents.json b/platform/ios/resources/Images.xcassets/default_marker.imageset/Contents.json similarity index 100% rename from platform/ios/platform/ios/resources/Images.xcassets/default_marker.imageset/Contents.json rename to platform/ios/resources/Images.xcassets/default_marker.imageset/Contents.json diff --git a/platform/ios/platform/ios/resources/Images.xcassets/default_marker.imageset/default_marker.pdf b/platform/ios/resources/Images.xcassets/default_marker.imageset/default_marker.pdf similarity index 100% rename from platform/ios/platform/ios/resources/Images.xcassets/default_marker.imageset/default_marker.pdf rename to platform/ios/resources/Images.xcassets/default_marker.imageset/default_marker.pdf diff --git a/platform/ios/platform/ios/resources/Images.xcassets/mapbox.imageset/Contents.json b/platform/ios/resources/Images.xcassets/mapbox.imageset/Contents.json similarity index 100% rename from platform/ios/platform/ios/resources/Images.xcassets/mapbox.imageset/Contents.json rename to platform/ios/resources/Images.xcassets/mapbox.imageset/Contents.json diff --git a/platform/ios/platform/ios/resources/Images.xcassets/mapbox.imageset/mapbox.pdf b/platform/ios/resources/Images.xcassets/mapbox.imageset/mapbox.pdf similarity index 100% rename from platform/ios/platform/ios/resources/Images.xcassets/mapbox.imageset/mapbox.pdf rename to platform/ios/resources/Images.xcassets/mapbox.imageset/mapbox.pdf diff --git a/platform/ios/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/Contents.json b/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/Contents.json similarity index 100% rename from platform/ios/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/Contents.json rename to platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/Contents.json diff --git a/platform/ios/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/mapbox_helmet.pdf b/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/mapbox_helmet.pdf similarity index 100% rename from platform/ios/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/mapbox_helmet.pdf rename to platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/mapbox_helmet.pdf diff --git a/platform/ios/platform/ios/resources/README b/platform/ios/resources/README similarity index 100% rename from platform/ios/platform/ios/resources/README rename to platform/ios/resources/README diff --git a/platform/ios/platform/ios/resources/ar.lproj/Localizable.stringsdict b/platform/ios/resources/ar.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/ar.lproj/Localizable.stringsdict rename to platform/ios/resources/ar.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/bg.lproj/Localizable.strings b/platform/ios/resources/bg.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/bg.lproj/Localizable.strings rename to platform/ios/resources/bg.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/bg.lproj/Localizable.stringsdict b/platform/ios/resources/bg.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/bg.lproj/Localizable.stringsdict rename to platform/ios/resources/bg.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/ca.lproj/Localizable.strings b/platform/ios/resources/ca.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/ca.lproj/Localizable.strings rename to platform/ios/resources/ca.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/ca.lproj/Localizable.stringsdict b/platform/ios/resources/ca.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/ca.lproj/Localizable.stringsdict rename to platform/ios/resources/ca.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/cs.lproj/Localizable.strings b/platform/ios/resources/cs.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/cs.lproj/Localizable.strings rename to platform/ios/resources/cs.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/cs.lproj/Localizable.stringsdict b/platform/ios/resources/cs.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/cs.lproj/Localizable.stringsdict rename to platform/ios/resources/cs.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/da.lproj/Localizable.strings b/platform/ios/resources/da.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/da.lproj/Localizable.strings rename to platform/ios/resources/da.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/da.lproj/Localizable.stringsdict b/platform/ios/resources/da.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/da.lproj/Localizable.stringsdict rename to platform/ios/resources/da.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/de.lproj/Localizable.strings b/platform/ios/resources/de.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/de.lproj/Localizable.strings rename to platform/ios/resources/de.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/de.lproj/Localizable.stringsdict b/platform/ios/resources/de.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/de.lproj/Localizable.stringsdict rename to platform/ios/resources/de.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/en.lproj/Localizable.stringsdict b/platform/ios/resources/en.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/en.lproj/Localizable.stringsdict rename to platform/ios/resources/en.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/es.lproj/Localizable.strings b/platform/ios/resources/es.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/es.lproj/Localizable.strings rename to platform/ios/resources/es.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/es.lproj/Localizable.stringsdict b/platform/ios/resources/es.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/es.lproj/Localizable.stringsdict rename to platform/ios/resources/es.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/fr.lproj/Localizable.strings b/platform/ios/resources/fr.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/fr.lproj/Localizable.strings rename to platform/ios/resources/fr.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/fr.lproj/Localizable.stringsdict b/platform/ios/resources/fr.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/fr.lproj/Localizable.stringsdict rename to platform/ios/resources/fr.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/gl.lproj/Localizable.strings b/platform/ios/resources/gl.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/gl.lproj/Localizable.strings rename to platform/ios/resources/gl.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/gl.lproj/Localizable.stringsdict b/platform/ios/resources/gl.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/gl.lproj/Localizable.stringsdict rename to platform/ios/resources/gl.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/he.lproj/Localizable.strings b/platform/ios/resources/he.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/he.lproj/Localizable.strings rename to platform/ios/resources/he.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/hu.lproj/Localizable.strings b/platform/ios/resources/hu.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/hu.lproj/Localizable.strings rename to platform/ios/resources/hu.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/hu.lproj/Localizable.stringsdict b/platform/ios/resources/hu.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/hu.lproj/Localizable.stringsdict rename to platform/ios/resources/hu.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/ja.lproj/Localizable.strings b/platform/ios/resources/ja.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/ja.lproj/Localizable.strings rename to platform/ios/resources/ja.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/ko.lproj/Localizable.strings b/platform/ios/resources/ko.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/ko.lproj/Localizable.strings rename to platform/ios/resources/ko.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/ko.lproj/Localizable.stringsdict b/platform/ios/resources/ko.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/ko.lproj/Localizable.stringsdict rename to platform/ios/resources/ko.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/lt.lproj/Localizable.strings b/platform/ios/resources/lt.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/lt.lproj/Localizable.strings rename to platform/ios/resources/lt.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/lt.lproj/Localizable.stringsdict b/platform/ios/resources/lt.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/lt.lproj/Localizable.stringsdict rename to platform/ios/resources/lt.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/pt-BR.lproj/Localizable.strings b/platform/ios/resources/pt-BR.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/pt-BR.lproj/Localizable.strings rename to platform/ios/resources/pt-BR.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/pt-BR.lproj/Localizable.stringsdict b/platform/ios/resources/pt-BR.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/pt-BR.lproj/Localizable.stringsdict rename to platform/ios/resources/pt-BR.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/pt-PT.lproj/Localizable.strings b/platform/ios/resources/pt-PT.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/pt-PT.lproj/Localizable.strings rename to platform/ios/resources/pt-PT.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/pt-PT.lproj/Localizable.stringsdict b/platform/ios/resources/pt-PT.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/pt-PT.lproj/Localizable.stringsdict rename to platform/ios/resources/pt-PT.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/ru.lproj/Localizable.strings b/platform/ios/resources/ru.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/ru.lproj/Localizable.strings rename to platform/ios/resources/ru.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/ru.lproj/Localizable.stringsdict b/platform/ios/resources/ru.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/ru.lproj/Localizable.stringsdict rename to platform/ios/resources/ru.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/sv.lproj/Localizable.strings b/platform/ios/resources/sv.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/sv.lproj/Localizable.strings rename to platform/ios/resources/sv.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/sv.lproj/Localizable.stringsdict b/platform/ios/resources/sv.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/sv.lproj/Localizable.stringsdict rename to platform/ios/resources/sv.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/uk.lproj/Localizable.strings b/platform/ios/resources/uk.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/uk.lproj/Localizable.strings rename to platform/ios/resources/uk.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/uk.lproj/Localizable.stringsdict b/platform/ios/resources/uk.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/uk.lproj/Localizable.stringsdict rename to platform/ios/resources/uk.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/vi.lproj/Localizable.strings b/platform/ios/resources/vi.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/vi.lproj/Localizable.strings rename to platform/ios/resources/vi.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/vi.lproj/Localizable.stringsdict b/platform/ios/resources/vi.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/vi.lproj/Localizable.stringsdict rename to platform/ios/resources/vi.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/resources/zh-Hans.lproj/Localizable.strings b/platform/ios/resources/zh-Hans.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/zh-Hans.lproj/Localizable.strings rename to platform/ios/resources/zh-Hans.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/zh-Hant.lproj/Localizable.strings b/platform/ios/resources/zh-Hant.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/ios/resources/zh-Hant.lproj/Localizable.strings rename to platform/ios/resources/zh-Hant.lproj/Localizable.strings diff --git a/platform/ios/platform/ios/resources/zh-Hant.lproj/Localizable.stringsdict b/platform/ios/resources/zh-Hant.lproj/Localizable.stringsdict similarity index 100% rename from platform/ios/platform/ios/resources/zh-Hant.lproj/Localizable.stringsdict rename to platform/ios/resources/zh-Hant.lproj/Localizable.stringsdict diff --git a/platform/ios/platform/ios/scripts/bazel-package.sh b/platform/ios/scripts/bazel-package.sh old mode 100755 new mode 100644 similarity index 92% rename from platform/ios/platform/ios/scripts/bazel-package.sh rename to platform/ios/scripts/bazel-package.sh index 1d37ae6cc..5a7966795 --- a/platform/ios/platform/ios/scripts/bazel-package.sh +++ b/platform/ios/scripts/bazel-package.sh @@ -52,8 +52,6 @@ if [ "$release_type" = "debug" ]; then compilation_mode="dbg" fi; -pushd ../../../../../ - echo "------ Determining Maplibre version and hash ------" sem_version=$(git describe --tags --match=ios-v*.*.* --abbrev=0 | sed 's/^ios-v//') @@ -67,8 +65,8 @@ if [ ! -d platform/ios/build ]; then mkdir platform/ios/build fi -cp platform/ios/platform/ios/framework/Info-static.plist "$temp_info_static_plist" -cp platform/ios/platform/ios/framework/Info.plist "$temp_info_plist" +cp platform/ios/framework/Info-static.plist "$temp_info_static_plist" +cp platform/ios//framework/Info.plist "$temp_info_plist" plutil -replace MLNSemanticVersionString -string "$sem_version" "$temp_info_static_plist" plutil -replace MLNCommitHash -string "$hash" "$temp_info_static_plist" @@ -85,7 +83,5 @@ bazel build //platform/ios:"$target" --apple_platform_type=ios \ --copt=-Wall --copt=-Wextra --copt=-Wpedantic \ --copt=-Werror -popd - echo "Done." echo "Package will be available in \"/bazel-bin/platform/ios/$target.xcframework.zip\"" diff --git a/platform/ios/platform/ios/scripts/bazel-xcodeproj.sh b/platform/ios/scripts/bazel-xcodeproj.sh old mode 100755 new mode 100644 similarity index 79% rename from platform/ios/platform/ios/scripts/bazel-xcodeproj.sh rename to platform/ios/scripts/bazel-xcodeproj.sh index fba912dcc..3f60eeda4 --- a/platform/ios/platform/ios/scripts/bazel-xcodeproj.sh +++ b/platform/ios/scripts/bazel-xcodeproj.sh @@ -2,8 +2,6 @@ set -euo pipefail -pushd ../../../../../ - echo "------ Determining Maplibre version and hash ------" sem_version=0.0.0 @@ -17,8 +15,8 @@ if [ ! -d platform/ios/build ]; then mkdir platform/ios/build fi -cp platform/ios/platform/ios/framework/Info-static.plist "$temp_info_static_plist" -cp platform/ios/platform/ios/framework/Info.plist "$temp_info_plist" +cp platform/ios/framework/Info-static.plist "$temp_info_static_plist" +cp platform/ios/framework/Info.plist "$temp_info_plist" plutil -replace MLNSemanticVersionString -string "$sem_version" "$temp_info_static_plist" plutil -replace MLNCommitHash -string "$hash" "$temp_info_static_plist" @@ -27,6 +25,4 @@ plutil -replace MLNCommitHash -string "$hash" "$temp_info_plist" echo "------ Building Maplibre version: $sem_version hash: $hash ------" -bazel run //platform/ios:xcodeproj - -popd \ No newline at end of file +bazel run //platform/ios:xcodeproj \ No newline at end of file diff --git a/platform/ios/platform/ios/scripts/deploy-packages.sh b/platform/ios/scripts/deploy-packages.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/scripts/deploy-packages.sh rename to platform/ios/scripts/deploy-packages.sh diff --git a/platform/ios/platform/ios/scripts/deploy-snapshot.sh b/platform/ios/scripts/deploy-snapshot.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/scripts/deploy-snapshot.sh rename to platform/ios/scripts/deploy-snapshot.sh diff --git a/platform/ios/platform/ios/scripts/deploy-swift-package.sh b/platform/ios/scripts/deploy-swift-package.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/scripts/deploy-swift-package.sh rename to platform/ios/scripts/deploy-swift-package.sh diff --git a/platform/ios/platform/ios/scripts/deploy-to-cocoapods.sh b/platform/ios/scripts/deploy-to-cocoapods.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/scripts/deploy-to-cocoapods.sh rename to platform/ios/scripts/deploy-to-cocoapods.sh diff --git a/platform/ios/platform/ios/scripts/document.sh b/platform/ios/scripts/document.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/scripts/document.sh rename to platform/ios/scripts/document.sh diff --git a/platform/ios/platform/ios/scripts/install-packaging-dependencies.sh b/platform/ios/scripts/install-packaging-dependencies.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/scripts/install-packaging-dependencies.sh rename to platform/ios/scripts/install-packaging-dependencies.sh diff --git a/platform/ios/platform/ios/scripts/ios-code-coverage.sh b/platform/ios/scripts/ios-code-coverage.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/scripts/ios-code-coverage.sh rename to platform/ios/scripts/ios-code-coverage.sh diff --git a/platform/ios/scripts/lint-plists.sh b/platform/ios/scripts/lint-plists.sh new file mode 100755 index 000000000..b438e4de2 --- /dev/null +++ b/platform/ios/scripts/lint-plists.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -euo pipefail +echo Linting... + +plutil -lint platform/ios/app/Info.plist +plutil -lint platform/ios/bench_UITests/Info.plist +plutil -lint platform/ios/benchmark/Info.plist +plutil -lint platform/ios/framework/Info.plist +plutil -lint platform/ios/framework/Info-static.plist +plutil -lint platform/ios/Integration_Test_Harness/Info.plist +plutil -lint platform/ios/Integration_Tests/Info.plist +plutil -lint platform/ios/iosapp-UITests/Info.plist +plutil -lint platform/ios/test/Info.plist diff --git a/platform/ios/platform/ios/scripts/lint-podspecs.js b/platform/ios/scripts/lint-podspecs.js old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/scripts/lint-podspecs.js rename to platform/ios/scripts/lint-podspecs.js diff --git a/platform/ios/platform/ios/scripts/metrics.sh b/platform/ios/scripts/metrics.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/scripts/metrics.sh rename to platform/ios/scripts/metrics.sh diff --git a/platform/ios/platform/ios/scripts/package.sh b/platform/ios/scripts/package.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/scripts/package.sh rename to platform/ios/scripts/package.sh diff --git a/platform/ios/platform/ios/scripts/publish.sh b/platform/ios/scripts/publish.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/scripts/publish.sh rename to platform/ios/scripts/publish.sh diff --git a/platform/ios/platform/ios/scripts/release-notes-github.md.ejs b/platform/ios/scripts/release-notes-github.md.ejs similarity index 100% rename from platform/ios/platform/ios/scripts/release-notes-github.md.ejs rename to platform/ios/scripts/release-notes-github.md.ejs diff --git a/platform/ios/platform/ios/scripts/release-notes-jazzy.md.ejs b/platform/ios/scripts/release-notes-jazzy.md.ejs similarity index 100% rename from platform/ios/platform/ios/scripts/release-notes-jazzy.md.ejs rename to platform/ios/scripts/release-notes-jazzy.md.ejs diff --git a/platform/ios/platform/ios/scripts/release-notes.js b/platform/ios/scripts/release-notes.js old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/scripts/release-notes.js rename to platform/ios/scripts/release-notes.js diff --git a/platform/ios/scripts/standalone.cmake b/platform/ios/scripts/standalone.cmake deleted file mode 100644 index fb0ae5e59..000000000 --- a/platform/ios/scripts/standalone.cmake +++ /dev/null @@ -1,18 +0,0 @@ -include(cmake/mason.cmake) - -# include once for every platform to get all dependency defines -set(MLN_PLATFORM "android") -include(cmake/mason-dependencies.cmake) -set(MLN_PLATFORM "ios") -include(cmake/mason-dependencies.cmake) - -get_cmake_property(_VARS VARIABLES) -foreach (_VAR ${_VARS}) - if (_VAR MATCHES "^MASON_PACKAGE_.+_NAME$") - set(_PACKAGE "${${_VAR}}") - if (MASON_PACKAGE_${_PACKAGE}_HEADER_ONLY) - file(RELATIVE_PATH _PREFIX "${CMAKE_CURRENT_LIST_DIR}/.." "${MASON_PACKAGE_${_PACKAGE}_PREFIX}") - message("${_PACKAGE} ${_PREFIX} ${MASON_PACKAGE_${_PACKAGE}_VERSION}") - endif() - endif() -endforeach() diff --git a/platform/ios/platform/ios/scripts/swift_package_template.swift b/platform/ios/scripts/swift_package_template.swift similarity index 100% rename from platform/ios/platform/ios/scripts/swift_package_template.swift rename to platform/ios/scripts/swift_package_template.swift diff --git a/platform/ios/platform/ios/scripts/update-swift-package.sh b/platform/ios/scripts/update-swift-package.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/scripts/update-swift-package.sh rename to platform/ios/scripts/update-swift-package.sh diff --git a/platform/ios/platform/ios/scripts/update-version.sh b/platform/ios/scripts/update-version.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/scripts/update-version.sh rename to platform/ios/scripts/update-version.sh diff --git a/platform/ios/platform/ios/scripts/validate-framework-zip.sh b/platform/ios/scripts/validate-framework-zip.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/scripts/validate-framework-zip.sh rename to platform/ios/scripts/validate-framework-zip.sh diff --git a/platform/ios/platform/ios/scripts/xcpackage.sh b/platform/ios/scripts/xcpackage.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/scripts/xcpackage.sh rename to platform/ios/scripts/xcpackage.sh diff --git a/platform/ios/platform/ios/sdk-files.json b/platform/ios/sdk-files.json similarity index 100% rename from platform/ios/platform/ios/sdk-files.json rename to platform/ios/sdk-files.json diff --git a/platform/ios/platform/ios/src/MLNAnnotationContainerView.h b/platform/ios/src/MLNAnnotationContainerView.h similarity index 100% rename from platform/ios/platform/ios/src/MLNAnnotationContainerView.h rename to platform/ios/src/MLNAnnotationContainerView.h diff --git a/platform/ios/platform/ios/src/MLNAnnotationContainerView.m b/platform/ios/src/MLNAnnotationContainerView.m similarity index 100% rename from platform/ios/platform/ios/src/MLNAnnotationContainerView.m rename to platform/ios/src/MLNAnnotationContainerView.m diff --git a/platform/ios/platform/ios/src/MLNAnnotationContainerView_Private.h b/platform/ios/src/MLNAnnotationContainerView_Private.h similarity index 100% rename from platform/ios/platform/ios/src/MLNAnnotationContainerView_Private.h rename to platform/ios/src/MLNAnnotationContainerView_Private.h diff --git a/platform/ios/platform/ios/src/MLNAnnotationImage.h b/platform/ios/src/MLNAnnotationImage.h similarity index 100% rename from platform/ios/platform/ios/src/MLNAnnotationImage.h rename to platform/ios/src/MLNAnnotationImage.h diff --git a/platform/ios/platform/ios/src/MLNAnnotationImage.m b/platform/ios/src/MLNAnnotationImage.m similarity index 100% rename from platform/ios/platform/ios/src/MLNAnnotationImage.m rename to platform/ios/src/MLNAnnotationImage.m diff --git a/platform/ios/platform/ios/src/MLNAnnotationImage_Private.h b/platform/ios/src/MLNAnnotationImage_Private.h similarity index 100% rename from platform/ios/platform/ios/src/MLNAnnotationImage_Private.h rename to platform/ios/src/MLNAnnotationImage_Private.h diff --git a/platform/ios/platform/ios/src/MLNAnnotationView.h b/platform/ios/src/MLNAnnotationView.h similarity index 100% rename from platform/ios/platform/ios/src/MLNAnnotationView.h rename to platform/ios/src/MLNAnnotationView.h diff --git a/platform/ios/platform/ios/src/MLNAnnotationView.mm b/platform/ios/src/MLNAnnotationView.mm similarity index 100% rename from platform/ios/platform/ios/src/MLNAnnotationView.mm rename to platform/ios/src/MLNAnnotationView.mm diff --git a/platform/ios/platform/ios/src/MLNAnnotationView_Private.h b/platform/ios/src/MLNAnnotationView_Private.h similarity index 100% rename from platform/ios/platform/ios/src/MLNAnnotationView_Private.h rename to platform/ios/src/MLNAnnotationView_Private.h diff --git a/platform/ios/platform/ios/src/MLNCalloutView.h b/platform/ios/src/MLNCalloutView.h similarity index 100% rename from platform/ios/platform/ios/src/MLNCalloutView.h rename to platform/ios/src/MLNCalloutView.h diff --git a/platform/ios/platform/ios/src/MLNCameraChangeReason.h b/platform/ios/src/MLNCameraChangeReason.h similarity index 100% rename from platform/ios/platform/ios/src/MLNCameraChangeReason.h rename to platform/ios/src/MLNCameraChangeReason.h diff --git a/platform/ios/platform/ios/src/MLNCompactCalloutView.h b/platform/ios/src/MLNCompactCalloutView.h similarity index 100% rename from platform/ios/platform/ios/src/MLNCompactCalloutView.h rename to platform/ios/src/MLNCompactCalloutView.h diff --git a/platform/ios/platform/ios/src/MLNCompactCalloutView.m b/platform/ios/src/MLNCompactCalloutView.m similarity index 100% rename from platform/ios/platform/ios/src/MLNCompactCalloutView.m rename to platform/ios/src/MLNCompactCalloutView.m diff --git a/platform/ios/platform/ios/src/MLNCompassButton.h b/platform/ios/src/MLNCompassButton.h similarity index 100% rename from platform/ios/platform/ios/src/MLNCompassButton.h rename to platform/ios/src/MLNCompassButton.h diff --git a/platform/ios/platform/ios/src/MLNCompassButton.mm b/platform/ios/src/MLNCompassButton.mm similarity index 100% rename from platform/ios/platform/ios/src/MLNCompassButton.mm rename to platform/ios/src/MLNCompassButton.mm diff --git a/platform/ios/platform/ios/src/MLNCompassButton_Private.h b/platform/ios/src/MLNCompassButton_Private.h similarity index 100% rename from platform/ios/platform/ios/src/MLNCompassButton_Private.h rename to platform/ios/src/MLNCompassButton_Private.h diff --git a/platform/ios/platform/ios/src/MLNFaux3DUserLocationAnnotationView.h b/platform/ios/src/MLNFaux3DUserLocationAnnotationView.h similarity index 100% rename from platform/ios/platform/ios/src/MLNFaux3DUserLocationAnnotationView.h rename to platform/ios/src/MLNFaux3DUserLocationAnnotationView.h diff --git a/platform/ios/platform/ios/src/MLNFaux3DUserLocationAnnotationView.mm b/platform/ios/src/MLNFaux3DUserLocationAnnotationView.mm similarity index 100% rename from platform/ios/platform/ios/src/MLNFaux3DUserLocationAnnotationView.mm rename to platform/ios/src/MLNFaux3DUserLocationAnnotationView.mm diff --git a/platform/ios/platform/ios/src/MLNMapAccessibilityElement.h b/platform/ios/src/MLNMapAccessibilityElement.h similarity index 100% rename from platform/ios/platform/ios/src/MLNMapAccessibilityElement.h rename to platform/ios/src/MLNMapAccessibilityElement.h diff --git a/platform/ios/platform/ios/src/MLNMapAccessibilityElement.mm b/platform/ios/src/MLNMapAccessibilityElement.mm similarity index 100% rename from platform/ios/platform/ios/src/MLNMapAccessibilityElement.mm rename to platform/ios/src/MLNMapAccessibilityElement.mm diff --git a/platform/ios/platform/ios/src/MLNMapProjection.h b/platform/ios/src/MLNMapProjection.h similarity index 100% rename from platform/ios/platform/ios/src/MLNMapProjection.h rename to platform/ios/src/MLNMapProjection.h diff --git a/platform/ios/platform/ios/src/MLNMapProjection.mm b/platform/ios/src/MLNMapProjection.mm similarity index 100% rename from platform/ios/platform/ios/src/MLNMapProjection.mm rename to platform/ios/src/MLNMapProjection.mm diff --git a/platform/ios/platform/ios/src/MLNMapView+IBAdditions.h b/platform/ios/src/MLNMapView+IBAdditions.h similarity index 100% rename from platform/ios/platform/ios/src/MLNMapView+IBAdditions.h rename to platform/ios/src/MLNMapView+IBAdditions.h diff --git a/platform/ios/platform/ios/src/MLNMapView+Impl.h b/platform/ios/src/MLNMapView+Impl.h similarity index 100% rename from platform/ios/platform/ios/src/MLNMapView+Impl.h rename to platform/ios/src/MLNMapView+Impl.h diff --git a/platform/ios/platform/ios/src/MLNMapView+Impl.mm b/platform/ios/src/MLNMapView+Impl.mm similarity index 100% rename from platform/ios/platform/ios/src/MLNMapView+Impl.mm rename to platform/ios/src/MLNMapView+Impl.mm diff --git a/platform/ios/platform/ios/src/MLNMapView+OpenGL.h b/platform/ios/src/MLNMapView+OpenGL.h similarity index 100% rename from platform/ios/platform/ios/src/MLNMapView+OpenGL.h rename to platform/ios/src/MLNMapView+OpenGL.h diff --git a/platform/ios/platform/ios/src/MLNMapView+OpenGL.mm b/platform/ios/src/MLNMapView+OpenGL.mm similarity index 100% rename from platform/ios/platform/ios/src/MLNMapView+OpenGL.mm rename to platform/ios/src/MLNMapView+OpenGL.mm diff --git a/platform/ios/platform/ios/src/MLNMapView.h b/platform/ios/src/MLNMapView.h similarity index 100% rename from platform/ios/platform/ios/src/MLNMapView.h rename to platform/ios/src/MLNMapView.h diff --git a/platform/ios/platform/ios/src/MLNMapView.mm b/platform/ios/src/MLNMapView.mm similarity index 100% rename from platform/ios/platform/ios/src/MLNMapView.mm rename to platform/ios/src/MLNMapView.mm diff --git a/platform/ios/platform/ios/src/MLNMapViewDelegate.h b/platform/ios/src/MLNMapViewDelegate.h similarity index 100% rename from platform/ios/platform/ios/src/MLNMapViewDelegate.h rename to platform/ios/src/MLNMapViewDelegate.h diff --git a/platform/ios/platform/ios/src/MLNMapView_Private.h b/platform/ios/src/MLNMapView_Private.h similarity index 100% rename from platform/ios/platform/ios/src/MLNMapView_Private.h rename to platform/ios/src/MLNMapView_Private.h diff --git a/platform/ios/platform/ios/src/MLNScaleBar.h b/platform/ios/src/MLNScaleBar.h similarity index 100% rename from platform/ios/platform/ios/src/MLNScaleBar.h rename to platform/ios/src/MLNScaleBar.h diff --git a/platform/ios/platform/ios/src/MLNScaleBar.mm b/platform/ios/src/MLNScaleBar.mm similarity index 100% rename from platform/ios/platform/ios/src/MLNScaleBar.mm rename to platform/ios/src/MLNScaleBar.mm diff --git a/platform/ios/platform/ios/src/MLNUserLocation.h b/platform/ios/src/MLNUserLocation.h similarity index 100% rename from platform/ios/platform/ios/src/MLNUserLocation.h rename to platform/ios/src/MLNUserLocation.h diff --git a/platform/ios/platform/ios/src/MLNUserLocation.m b/platform/ios/src/MLNUserLocation.m similarity index 100% rename from platform/ios/platform/ios/src/MLNUserLocation.m rename to platform/ios/src/MLNUserLocation.m diff --git a/platform/ios/platform/ios/src/MLNUserLocationAnnotationView.h b/platform/ios/src/MLNUserLocationAnnotationView.h similarity index 100% rename from platform/ios/platform/ios/src/MLNUserLocationAnnotationView.h rename to platform/ios/src/MLNUserLocationAnnotationView.h diff --git a/platform/ios/platform/ios/src/MLNUserLocationAnnotationView.m b/platform/ios/src/MLNUserLocationAnnotationView.m similarity index 100% rename from platform/ios/platform/ios/src/MLNUserLocationAnnotationView.m rename to platform/ios/src/MLNUserLocationAnnotationView.m diff --git a/platform/ios/platform/ios/src/MLNUserLocationAnnotationViewStyle.h b/platform/ios/src/MLNUserLocationAnnotationViewStyle.h similarity index 100% rename from platform/ios/platform/ios/src/MLNUserLocationAnnotationViewStyle.h rename to platform/ios/src/MLNUserLocationAnnotationViewStyle.h diff --git a/platform/ios/platform/ios/src/MLNUserLocationAnnotationViewStyle.m b/platform/ios/src/MLNUserLocationAnnotationViewStyle.m similarity index 100% rename from platform/ios/platform/ios/src/MLNUserLocationAnnotationViewStyle.m rename to platform/ios/src/MLNUserLocationAnnotationViewStyle.m diff --git a/platform/ios/platform/ios/src/MLNUserLocationAnnotationView_Private.h b/platform/ios/src/MLNUserLocationAnnotationView_Private.h similarity index 100% rename from platform/ios/platform/ios/src/MLNUserLocationAnnotationView_Private.h rename to platform/ios/src/MLNUserLocationAnnotationView_Private.h diff --git a/platform/ios/platform/ios/src/MLNUserLocationHeadingArrowLayer.h b/platform/ios/src/MLNUserLocationHeadingArrowLayer.h similarity index 100% rename from platform/ios/platform/ios/src/MLNUserLocationHeadingArrowLayer.h rename to platform/ios/src/MLNUserLocationHeadingArrowLayer.h diff --git a/platform/ios/platform/ios/src/MLNUserLocationHeadingArrowLayer.m b/platform/ios/src/MLNUserLocationHeadingArrowLayer.m similarity index 100% rename from platform/ios/platform/ios/src/MLNUserLocationHeadingArrowLayer.m rename to platform/ios/src/MLNUserLocationHeadingArrowLayer.m diff --git a/platform/ios/platform/ios/src/MLNUserLocationHeadingBeamLayer.h b/platform/ios/src/MLNUserLocationHeadingBeamLayer.h similarity index 100% rename from platform/ios/platform/ios/src/MLNUserLocationHeadingBeamLayer.h rename to platform/ios/src/MLNUserLocationHeadingBeamLayer.h diff --git a/platform/ios/platform/ios/src/MLNUserLocationHeadingBeamLayer.m b/platform/ios/src/MLNUserLocationHeadingBeamLayer.m similarity index 100% rename from platform/ios/platform/ios/src/MLNUserLocationHeadingBeamLayer.m rename to platform/ios/src/MLNUserLocationHeadingBeamLayer.m diff --git a/platform/ios/platform/ios/src/MLNUserLocationHeadingIndicator.h b/platform/ios/src/MLNUserLocationHeadingIndicator.h similarity index 100% rename from platform/ios/platform/ios/src/MLNUserLocationHeadingIndicator.h rename to platform/ios/src/MLNUserLocationHeadingIndicator.h diff --git a/platform/ios/platform/ios/src/MLNUserLocation_Private.h b/platform/ios/src/MLNUserLocation_Private.h similarity index 100% rename from platform/ios/platform/ios/src/MLNUserLocation_Private.h rename to platform/ios/src/MLNUserLocation_Private.h diff --git a/platform/ios/platform/ios/src/Mapbox.h b/platform/ios/src/Mapbox.h similarity index 100% rename from platform/ios/platform/ios/src/Mapbox.h rename to platform/ios/src/Mapbox.h diff --git a/platform/ios/platform/ios/src/NSOrthography+MLNAdditions.h b/platform/ios/src/NSOrthography+MLNAdditions.h similarity index 100% rename from platform/ios/platform/ios/src/NSOrthography+MLNAdditions.h rename to platform/ios/src/NSOrthography+MLNAdditions.h diff --git a/platform/ios/platform/ios/src/NSOrthography+MLNAdditions.m b/platform/ios/src/NSOrthography+MLNAdditions.m similarity index 100% rename from platform/ios/platform/ios/src/NSOrthography+MLNAdditions.m rename to platform/ios/src/NSOrthography+MLNAdditions.m diff --git a/platform/ios/platform/ios/src/UIColor+MLNAdditions.h b/platform/ios/src/UIColor+MLNAdditions.h similarity index 100% rename from platform/ios/platform/ios/src/UIColor+MLNAdditions.h rename to platform/ios/src/UIColor+MLNAdditions.h diff --git a/platform/ios/platform/ios/src/UIColor+MLNAdditions.mm b/platform/ios/src/UIColor+MLNAdditions.mm similarity index 100% rename from platform/ios/platform/ios/src/UIColor+MLNAdditions.mm rename to platform/ios/src/UIColor+MLNAdditions.mm diff --git a/platform/ios/platform/ios/src/UIDevice+MLNAdditions.h b/platform/ios/src/UIDevice+MLNAdditions.h similarity index 100% rename from platform/ios/platform/ios/src/UIDevice+MLNAdditions.h rename to platform/ios/src/UIDevice+MLNAdditions.h diff --git a/platform/ios/platform/ios/src/UIDevice+MLNAdditions.m b/platform/ios/src/UIDevice+MLNAdditions.m similarity index 100% rename from platform/ios/platform/ios/src/UIDevice+MLNAdditions.m rename to platform/ios/src/UIDevice+MLNAdditions.m diff --git a/platform/ios/platform/ios/src/UIImage+MLNAdditions.h b/platform/ios/src/UIImage+MLNAdditions.h similarity index 100% rename from platform/ios/platform/ios/src/UIImage+MLNAdditions.h rename to platform/ios/src/UIImage+MLNAdditions.h diff --git a/platform/ios/platform/ios/src/UIImage+MLNAdditions.mm b/platform/ios/src/UIImage+MLNAdditions.mm similarity index 100% rename from platform/ios/platform/ios/src/UIImage+MLNAdditions.mm rename to platform/ios/src/UIImage+MLNAdditions.mm diff --git a/platform/ios/platform/ios/src/UIView+MLNAdditions.h b/platform/ios/src/UIView+MLNAdditions.h similarity index 100% rename from platform/ios/platform/ios/src/UIView+MLNAdditions.h rename to platform/ios/src/UIView+MLNAdditions.h diff --git a/platform/ios/platform/ios/src/UIView+MLNAdditions.m b/platform/ios/src/UIView+MLNAdditions.m similarity index 100% rename from platform/ios/platform/ios/src/UIView+MLNAdditions.m rename to platform/ios/src/UIView+MLNAdditions.m diff --git a/platform/ios/platform/ios/src/UIViewController+MLNAdditions.h b/platform/ios/src/UIViewController+MLNAdditions.h similarity index 100% rename from platform/ios/platform/ios/src/UIViewController+MLNAdditions.h rename to platform/ios/src/UIViewController+MLNAdditions.h diff --git a/platform/ios/platform/ios/src/UIViewController+MLNAdditions.m b/platform/ios/src/UIViewController+MLNAdditions.m similarity index 100% rename from platform/ios/platform/ios/src/UIViewController+MLNAdditions.m rename to platform/ios/src/UIViewController+MLNAdditions.m diff --git a/platform/ios/platform/ios/test/BUILD.bazel b/platform/ios/test/BUILD.bazel similarity index 74% rename from platform/ios/platform/ios/test/BUILD.bazel rename to platform/ios/test/BUILD.bazel index 8eb8d6544..8b5656a69 100644 --- a/platform/ios/platform/ios/test/BUILD.bazel +++ b/platform/ios/test/BUILD.bazel @@ -18,8 +18,8 @@ objc_library( ], ), deps = [ - "//platform/ios:sdk", - "//platform/ios/platform/darwin/test:test_utility", + "//platform:ios-sdk", + "//platform/darwin:test_utility", ], ) @@ -34,7 +34,7 @@ objc_library( ), copts = CPP_FLAGS + MAPLIBRE_FLAGS + WARNING_FLAGS, deps = [ - "//platform/ios:sdk", + "//platform:ios-sdk", ], ) @@ -45,10 +45,10 @@ swift_library( ["*.swift"], allow_empty = False, ) + [ - "//platform/ios/platform/darwin/test:MLNSDKTestHelpers.swift", + "//platform/darwin:test/MLNSDKTestHelpers.swift", ], deps = [ - "//platform/ios:sdk", + "//platform:ios-sdk", ], ) @@ -63,8 +63,12 @@ ios_unit_test( "ios_tests_objc_srcs", "ios_tests_objcpp_srcs", "ios_tests_swift_srcs", - "//platform/ios/platform/darwin/test:shared_tests_objc_srcs", - "//platform/ios/platform/darwin/test:shared_tests_objcpp_srcs", - "//platform/ios/platform/darwin/test:shared_tests_swift_srcs", + "//platform/darwin:shared_tests_objc_srcs", + "//platform/darwin:shared_tests_objcpp_srcs", + "//platform/darwin:shared_tests_swift_srcs", ], ) + +exports_files([ + "Info.plist", +]) diff --git a/platform/ios/platform/ios/test/CI-Expressions.xctestplan b/platform/ios/test/CI-Expressions.xctestplan similarity index 100% rename from platform/ios/platform/ios/test/CI-Expressions.xctestplan rename to platform/ios/test/CI-Expressions.xctestplan diff --git a/platform/ios/platform/ios/test/CI.xctestplan b/platform/ios/test/CI.xctestplan similarity index 100% rename from platform/ios/platform/ios/test/CI.xctestplan rename to platform/ios/test/CI.xctestplan diff --git a/platform/ios/platform/ios/test/Info.plist b/platform/ios/test/Info.plist similarity index 100% rename from platform/ios/platform/ios/test/Info.plist rename to platform/ios/test/Info.plist diff --git a/platform/ios/platform/ios/test/MLNAnnotationViewIntegrationTests.swift b/platform/ios/test/MLNAnnotationViewIntegrationTests.swift similarity index 100% rename from platform/ios/platform/ios/test/MLNAnnotationViewIntegrationTests.swift rename to platform/ios/test/MLNAnnotationViewIntegrationTests.swift diff --git a/platform/ios/platform/ios/test/MLNAnnotationViewTests.m b/platform/ios/test/MLNAnnotationViewTests.m similarity index 100% rename from platform/ios/platform/ios/test/MLNAnnotationViewTests.m rename to platform/ios/test/MLNAnnotationViewTests.m diff --git a/platform/ios/platform/ios/test/MLNMapAccessibilityElementTests.m b/platform/ios/test/MLNMapAccessibilityElementTests.m similarity index 100% rename from platform/ios/platform/ios/test/MLNMapAccessibilityElementTests.m rename to platform/ios/test/MLNMapAccessibilityElementTests.m diff --git a/platform/ios/platform/ios/test/MLNMapViewCompassViewTests.mm b/platform/ios/test/MLNMapViewCompassViewTests.mm similarity index 100% rename from platform/ios/platform/ios/test/MLNMapViewCompassViewTests.mm rename to platform/ios/test/MLNMapViewCompassViewTests.mm diff --git a/platform/ios/platform/ios/test/MLNMapViewContentInsetTests.m b/platform/ios/test/MLNMapViewContentInsetTests.m similarity index 100% rename from platform/ios/platform/ios/test/MLNMapViewContentInsetTests.m rename to platform/ios/test/MLNMapViewContentInsetTests.m diff --git a/platform/ios/platform/ios/test/MLNMapViewDelegateIntegrationTests.swift b/platform/ios/test/MLNMapViewDelegateIntegrationTests.swift similarity index 100% rename from platform/ios/platform/ios/test/MLNMapViewDelegateIntegrationTests.swift rename to platform/ios/test/MLNMapViewDelegateIntegrationTests.swift diff --git a/platform/ios/platform/ios/test/MLNMapViewDirectionTests.mm b/platform/ios/test/MLNMapViewDirectionTests.mm similarity index 100% rename from platform/ios/platform/ios/test/MLNMapViewDirectionTests.mm rename to platform/ios/test/MLNMapViewDirectionTests.mm diff --git a/platform/ios/platform/ios/test/MLNMapViewGestureRecognizerTests.mm b/platform/ios/test/MLNMapViewGestureRecognizerTests.mm similarity index 100% rename from platform/ios/platform/ios/test/MLNMapViewGestureRecognizerTests.mm rename to platform/ios/test/MLNMapViewGestureRecognizerTests.mm diff --git a/platform/ios/platform/ios/test/MLNMapViewLayoutTests.m b/platform/ios/test/MLNMapViewLayoutTests.m similarity index 100% rename from platform/ios/platform/ios/test/MLNMapViewLayoutTests.m rename to platform/ios/test/MLNMapViewLayoutTests.m diff --git a/platform/ios/platform/ios/test/MLNMapViewPitchTests.m b/platform/ios/test/MLNMapViewPitchTests.m similarity index 100% rename from platform/ios/platform/ios/test/MLNMapViewPitchTests.m rename to platform/ios/test/MLNMapViewPitchTests.m diff --git a/platform/ios/platform/ios/test/MLNMapViewScaleBarTests.m b/platform/ios/test/MLNMapViewScaleBarTests.m similarity index 100% rename from platform/ios/platform/ios/test/MLNMapViewScaleBarTests.m rename to platform/ios/test/MLNMapViewScaleBarTests.m diff --git a/platform/ios/platform/ios/test/MLNMapViewZoomTests.mm b/platform/ios/test/MLNMapViewZoomTests.mm similarity index 100% rename from platform/ios/platform/ios/test/MLNMapViewZoomTests.mm rename to platform/ios/test/MLNMapViewZoomTests.mm diff --git a/platform/ios/platform/ios/test/MLNMockGestureRecognizers.h b/platform/ios/test/MLNMockGestureRecognizers.h similarity index 100% rename from platform/ios/platform/ios/test/MLNMockGestureRecognizers.h rename to platform/ios/test/MLNMockGestureRecognizers.h diff --git a/platform/ios/platform/ios/test/MLNMockGestureRecognizers.m b/platform/ios/test/MLNMockGestureRecognizers.m similarity index 100% rename from platform/ios/platform/ios/test/MLNMockGestureRecognizers.m rename to platform/ios/test/MLNMockGestureRecognizers.m diff --git a/platform/ios/platform/ios/test/MLNNSOrthographyAdditionsTests.m b/platform/ios/test/MLNNSOrthographyAdditionsTests.m similarity index 100% rename from platform/ios/platform/ios/test/MLNNSOrthographyAdditionsTests.m rename to platform/ios/test/MLNNSOrthographyAdditionsTests.m diff --git a/platform/ios/platform/ios/test/MLNNetworkConfigurationTests.m b/platform/ios/test/MLNNetworkConfigurationTests.m similarity index 100% rename from platform/ios/platform/ios/test/MLNNetworkConfigurationTests.m rename to platform/ios/test/MLNNetworkConfigurationTests.m diff --git a/platform/ios/test/common/BUILD.bazel b/platform/ios/test/common/BUILD.bazel index 147ae6d1b..28644ab39 100644 --- a/platform/ios/test/common/BUILD.bazel +++ b/platform/ios/test/common/BUILD.bazel @@ -1,5 +1,5 @@ load("@build_bazel_rules_apple//apple:ios.bzl", "ios_application") -load("//platform/ios:bazel/config.bzl", "BUNDLE_ID_PREFIX") +load("//platform/ios/bazel:config.bzl", "BUNDLE_ID_PREFIX") cc_library( name = "ios_test_runner_lib", diff --git a/platform/ios/platform/ios/vendor/BUILD.bazel b/platform/ios/vendor/BUILD.bazel similarity index 73% rename from platform/ios/platform/ios/vendor/BUILD.bazel rename to platform/ios/vendor/BUILD.bazel index 126f0bbd2..aab04f313 100644 --- a/platform/ios/platform/ios/vendor/BUILD.bazel +++ b/platform/ios/vendor/BUILD.bazel @@ -18,5 +18,10 @@ objc_library( ), copts = WARNING_FLAGS, includes = ["SMCalloutView"], - visibility = ["//platform/ios:__pkg__"], + sdk_frameworks = ["UIKit"], + tags = ["manual"], + visibility = [ + "//platform:__pkg__", + "//platform/ios:__pkg__", + ], ) diff --git a/platform/ios/platform/ios/vendor/SMCalloutView/SMCalloutView.h b/platform/ios/vendor/SMCalloutView/SMCalloutView.h old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/vendor/SMCalloutView/SMCalloutView.h rename to platform/ios/vendor/SMCalloutView/SMCalloutView.h diff --git a/platform/ios/platform/ios/vendor/SMCalloutView/SMCalloutView.m b/platform/ios/vendor/SMCalloutView/SMCalloutView.m old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/ios/vendor/SMCalloutView/SMCalloutView.m rename to platform/ios/vendor/SMCalloutView/SMCalloutView.m diff --git a/platform/macos/BUILD.bazel b/platform/macos/BUILD.bazel new file mode 100644 index 000000000..6bd37a1dd --- /dev/null +++ b/platform/macos/BUILD.bazel @@ -0,0 +1,38 @@ +load( + "bazel/files.bzl", + "MLN_MACOS_PRIVATE_HEADERS", + "MLN_MACOS_PUBLIC_HEADERS", + "MLN_MACOS_PUBLIC_OBJCPP_SOURCE", + "MLN_MACOS_PUBLIC_OBJC_SOURCE", +) + +filegroup( + name = "macos_private_hdrs", + srcs = MLN_MACOS_PRIVATE_HEADERS, + visibility = ["//visibility:public"], +) + +filegroup( + name = "macos_public_hdrs", + srcs = MLN_MACOS_PUBLIC_HEADERS, + visibility = ["//visibility:public"], +) + +filegroup( + name = "macos_objcpp_srcs", + srcs = MLN_MACOS_PUBLIC_OBJCPP_SOURCE, + visibility = ["//visibility:public"], +) + +filegroup( + name = "macos_objc_srcs", + srcs = MLN_MACOS_PUBLIC_OBJC_SOURCE, + visibility = ["//visibility:public"], +) + +exports_files( + MLN_MACOS_PRIVATE_HEADERS + + MLN_MACOS_PUBLIC_HEADERS + + MLN_MACOS_PUBLIC_OBJCPP_SOURCE + + MLN_MACOS_PUBLIC_OBJC_SOURCE, +) diff --git a/platform/macos/CHANGELOG.md b/platform/macos/CHANGELOG.md index fd30d4976..6c0f6374c 100644 --- a/platform/macos/CHANGELOG.md +++ b/platform/macos/CHANGELOG.md @@ -1,3 +1,680 @@ # Changelog for Mapbox Maps SDK for macOS -The [Mapbox Maps SDK for macOS](https://mapbox.github.io/mapbox-gl-native/macos/) moved out of this repository [in late 2019](https://github.com/mapbox/mapbox-gl-native/issues/15971). The changelog is now located [in the mapbox-gl-native-ios repository](https://github.com/mapbox/mapbox-gl-native-ios/tree/master/platform/macos/CHANGELOG.md). +MapLibre welcomes participation and contributions from everyone. Please read [`Contributing Guide`](https://github.com/maplibre/maplibre-native/blob/main/CONTRIBUTING.md) to get started. + +## 0.19.1 - September 06, 2021 + +### Bug Fixes + +* Invalid tile url template for MapLibre style [#107](https://github.com/maplibre/maplibre-native/pull/107) +* Adjust local glyphs [#122](https://github.com/maplibre/maplibre-native/pull/122) +* Return correct Mapbox TileServerOptions [#132](https://github.com/maplibre/maplibre-native/pull/132) + +### Other + +* Fix perf regression in cached tiles of tile pyramid [#129](https://github.com/maplibre/maplibre-native/pull/129) +* Upgrade to newest protozero [#148](https://github.com/maplibre/maplibre-native/pull/148) +* Fix build for Xcode 12.5 & 13-beta. [#153](https://github.com/maplibre/maplibre-native/pull/153) + +## 0.19.0 - June 29, 2021 + +### Features + +* Replacing hardcoded configuration with configurable API and removing Mapbox assets and dependencies [#90](https://github.com/maplibre/maplibre-native/pull/90) + +## 0.18.0 - March 12, 2021 + +### Features + +* Added open geo url support to the macos app. + +### Other + +* mapbox-gl-js submodule has been replaced with maplibre-gl-js +* Removed Mapbox Mobile Events and Telemetry [#7](https://github.com/maplibre/maplibre-native/pull/7) + +## 0.17.0 - January 6, 2021 + +### Features + +* Added the mbtiles file source for rendering vector tiles from file stored locally on the device. + +## 0.16.0 + +### Styles and rendering + +* Added the `mgl_distanceFrom:` expression function for calculating the shortest distance between the evaluated feature and an `MLNPointAnnotation`, `MLNPointCollection`, `MLNPolyline`, `MLNMultiPolyline`, `MLNPolygon`, or `MLNMultiPolygon` that you specify as part of an `NSExpression` format string. ([#295](https://github.com/mapbox/mapbox-gl-native-ios/pull/295)) +* Added the `MLNCircleStyleLayer.circleSortKey` property. ([mapbox/mapbox-gl-native#15875](https://github.com/mapbox/mapbox-gl-native/pull/15875)) +* Chinese, Japanese, and Korean characters are now set in the font specified in style JSON or by the `MLNSymbolLayer.textFontNames` property. If the named font is not installed on the device or bundled with the application, the characters are set in a fallback font listed in the `MLNIdeographicFontFamilyName` key in the Info.plist file. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) +* The `MLNIdeographicFontFamilyName` key in the Info.plist file can now specify the fallback fonts for CJK characters by their PostScript names or display names in addition to font family names. For example, you can specify `NotoSansCJKjp-Bold` or `Noto Sans CJK JP Bold`, which ensures that the characters are set in bold. You can alternatively specify these font names in the `MLNIdeographicFontFamilyName` key of `NSUserDefaults.standardUserDefaults`. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) +* CJK characters are now laid out according to the font, so fonts with nonsquare glyphs have the correct kerning. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) +* Fixed an issue where the baseline for CJK characters was too low compared to non-CJK characters. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) +* Fixed a crash when calling the `-[MLNStyle removeImageForName:]` method with the name of a nonexistent image. ([mapbox/mapbox-gl-native#16391](https://github.com/mapbox/mapbox-gl-native/pull/16391)) +* Fixed an issue where properties such as `MLNFillStyleLayer.fillColor` and `MLNLineStyleLayer.lineColor` misinterpreted non-opaque `NSColor`s. ([#266](https://github.com/mapbox/mapbox-gl-native-ios/pull/266)) + +### Offline maps + +* Added the `-[MLNOfflinePack setContext:completionHandler:]` method for replacing the data associated with an offline pack, such as a name. ([#288](https://github.com/mapbox/mapbox-gl-native-ios/pull/288)) +* Added the `MLNOfflineStorage.databasePath` and `MLNOfflineStorage.databaseURL` properties to obtain the path of the database that contains offline packs and the ambient cache. To customize this path, set the `MLNOfflineStorageDatabasePath` in Info.plist. ([#298](https://github.com/mapbox/mapbox-gl-native-ios/pull/298)) +* Fixed an error that occurred if your implementation of the `-[MLNOfflineStorageDelegate offlineStorage:URLForResourceOfKind:]` method returned a local file URL. ([mapbox/mapbox-gl-native#16428](https://github.com/mapbox/mapbox-gl-native/pull/16428)) + +### Other changes + +* Fixed a crash when encountering an invalid polyline. ([mapbox/mapbox-gl-native#16409](https://github.com/mapbox/mapbox-gl-native/pull/16409)) +* Fixed an issue where an `MLNMapSnapshotOptions` with an invalid `MLNMapCamera.centerCoordinate`, negative `MLNMapCamera.heading`, negative `MLNMapCamera.pitch`, and negative `MLNMapSnapshotOptions.zoomLevel` resulted in a snapshot centered on Null Island at zoom level 0 even if the style specified a different initial center coordinate or zoom level. ([#280](https://github.com/mapbox/mapbox-gl-native-ios/pull/280)) +* Certain logging statements no longer run on the main thread. ([mapbox/mapbox-gl-native#16325](https://github.com/mapbox/mapbox-gl-native/pull/16325)) + +## 0.15.1 + +* Fixed various crashes, including crashes on launch, on macOS 10.11.0 through 10.14._x_. ([mapbox/mapbox-gl-native#16412](https://github.com/mapbox/mapbox-gl-native/pull/16412)) + +## 0.15.0 + +### Styles and rendering + +* Added the `-[MLNMapViewDelegate mapView:shouldRemoveStyleImage:]` method for optimizing style image caching. ([#14769](https://github.com/mapbox/mapbox-gl-native/pull/14769)) +* Added the `image` expression function for converting an image name into a style image. Use this function in expressions in style JSON or with the `MLN_FUNCTION()` syntax in an `NSExpression` format string. Image expressions are compatible with the `mgl_attributed:` expression function and `MLNAttributedExpression` classes for embedding icons inline in text labels. ([#15877](https://github.com/mapbox/mapbox-gl-native/pull/15877), [#15937](https://github.com/mapbox/mapbox-gl-native/pull/15937)) +* The `IN` and `CONTAINS` predicate operators can now test whether a string is a substring of another string or whether the evaluated feature (`SELF`) lies within a given `MLNShape` or `MLNFeature`. ([#183](https://github.com/mapbox/mapbox-gl-native-ios/pull/183), [#184](https://github.com/mapbox/mapbox-gl-native-ios/pull/184)) +* Added the `MLNSymbolStyleLayer.textWritingModes` layout property. This property can be set to `MLNTextWritingModeHorizontal` or `MLNTextWritingModeVertical`. ([#14932](https://github.com/mapbox/mapbox-gl-native/pull/14932)) +* Added the `MLNLineStyleLayer.lineSortKey` and `MLNFillStyleLayer.fillSortKey` properties. ([#179](https://github.com/mapbox/mapbox-gl-native-ios/pull/179)) +* The `MLNSymbolStyleLayer.iconTextFit` property now respects the cap insets of any nine-part stretchable image passed into the `-[MLNStyle setImage:forName:]` method. You can define the stretchable area in Xcode’s asset catalog or by setting the `NSImage.capInsets` property. ([#182](https://github.com/mapbox/mapbox-gl-native-ios/pull/182)) +* Fixed crashes triggered when `MLNSource` and `MLNStyleLayer` objects are accessed after having been invalidated after a style change. ([#15539](https://github.com/mapbox/mapbox-gl-native/pull/15539)) +* Fixed an issue where fill extrusion layers would be incorrectly rendered above other layers. ([#15065](https://github.com/mapbox/mapbox-gl-native/pull/15065)) +* Fixed rendering and collision detection issues with using `MLNSymbolStyleLayer.textVariableAnchor` and `MLNSymbolStyleLayer.iconTextFit` properties on the same layer. ([#15367](https://github.com/mapbox/mapbox-gl-native/pull/15367)) +* Fixed symbol overlap when zooming out quickly. ([#15416](https://github.com/mapbox/mapbox-gl-native/pull/15416)) +* Fixed an issue where non-template images would draw as template images when used in the same style layer. ([#15456](https://github.com/mapbox/mapbox-gl-native/pull/15456)) +* Fixed an issue where the collision boxes for symbols would not be updated when `MLNSymbolStyleLayer.textTranslation` or `MLNSymbolStyleLayer.iconTranslation` were used. ([#15467](https://github.com/mapbox/mapbox-gl-native/pull/15467)) +* Fixed an issue that caused `MLNTileSourceOptionMaximumZoomLevel` to be ignored when setting `MLNTileSource.configurationURL`. ([#15581](https://github.com/mapbox/mapbox-gl-native/pull/15581)) +* Fixed an issue where `MLNSymbolStyleLayer.symbolSortKey` could sort text and icons incorrectly. ([#16023](https://github.com/mapbox/mapbox-gl-native/pull/16023)) +* Fixed an issue where style layers backed by a shape source could flicker when transitioning between styles. ([#15907](https://github.com/mapbox/mapbox-gl-native/pull/15907), [#15941](https://github.com/mapbox/mapbox-gl-native/pull/15941)) +* Improved the performance of loading a style that has many style images. ([#16187](https://github.com/mapbox/mapbox-gl-native/pull/16187)) +* Updated “map ID” to the more accurate term “tileset ID” in documentation; updated “style's Map ID” to the more accurate term “style URL”. ([#15116](https://github.com/mapbox/mapbox-gl-native/pull/15116)) + +### Camera + +* Setting `MLNMapView.contentInset` now moves the map’s focal point to the center of the content frame after insetting. ([#14664](https://github.com/mapbox/mapbox-gl-native/pull/14664)) +* The `-[MLNMapView setCamera:withDuration:animationTimingFunction:edgePadding:completionHandler:]` method now adds the current value of the `MLNMapView.contentInsets` property to the `edgePadding` parameter. ([#14813](https://github.com/mapbox/mapbox-gl-native/pull/14813)) +* Added variants of multiple animated `MLNMapView` methods that accept completion handlers ([#14381](https://github.com/mapbox/mapbox-gl-native/pull/14381)): + * `-[MLNMapView setVisibleCoordinateBounds:edgePadding:animated:completionHandler:]` + * `-[MLNMapView setContentInsets:animated:completionHandler:]` + * `-[MLNMapView showAnnotations:edgePadding:animated:completionHandler:]` +* Added the `MLNMapView.minimumPitch` and `MLNMapView.maximumPitch` properties to further limit how much the user or your code can tilt the map. ([#208](https://github.com/mapbox/mapbox-gl-native-ios/pull/208)) +* Fixed an issue where it was possible to set the map’s content insets then tilt the map enough to see the horizon, causing performance issues. ([#15195](https://github.com/mapbox/mapbox-gl-native/pull/15195)) +* Fixed an issue where animated camera transitions zoomed in or out too dramatically. ([#15281](https://github.com/mapbox/mapbox-gl-native/pull/15281)) +* Improved performance when continuously animating a tilted map. ([#16287](https://github.com/mapbox/mapbox-gl-native/pull/16287)) + +### Feature querying + +* Fixed an issue where `-[MLNMapView visibleFeaturesInRect:]` and `-[MLNShapeSource featuresMatchingPredicate:]` omitted some features from the return value. ([#14884](https://github.com/mapbox/mapbox-gl-native/pull/14884)) +* Fixed an issue where `-[MLNMapView visibleFeaturesInRect:]` and `-[MLNShapeSource featuresMatchingPredicate:]` could return incorrect coordinates at zoom levels 20 and higher. ([#15560](https://github.com/mapbox/mapbox-gl-native/pull/15560)) +* Improved feature querying performance. ([#14930](https://github.com/mapbox/mapbox-gl-native/pull/14930)) + +### Snapshots + +* Added an `-[MLNMapSnapshotter startWithOverlayHandler:completionHandler:]` method to provide the snapshot's current `CGContext` in order to perform custom drawing on `MLNMapSnapshot` objects. ([#15530](https://github.com/mapbox/mapbox-gl-native/pull/15530)) +* Added the `MLNMapSnapshotter.delegate` property and `MLNMapSnapshotterDelegate` protocol for customizing the style before taking a snapshot. ([#235](https://github.com/mapbox/mapbox-gl-native-ios/pull/235)) +* You no longer need to explicitly capture the `MLNMapSnapshotter` object in the completion handler that you specify in `-[MLNMapSnapshotter startWithCompletionHandler:]`. Even if you declare the snapshotter locally without holding a strong reference to it, the snapshotter is only deallocated after the completion handler finishes, and the completion handler generally receives a valid snapshot. ([#210](https://github.com/mapbox/mapbox-gl-native-ios/pull/210)) +* The `-[MLNMapSnapshotter cancel]` method no longer calls the completion handler passed into `-[MLNMapSnapshotter startWithCompletionHandler:]`. ([#210](https://github.com/mapbox/mapbox-gl-native-ios/pull/210)) +* Fixed an issue where the `MLNMapSnapshotter.loading` property always returned `NO`, even while loading a snapshot. ([#210](https://github.com/mapbox/mapbox-gl-native-ios/pull/210)) + +### Networking and storage + +* Ideographic glyphs from Chinese, Japanese, and Korean are no longer downloaded by default as part of offline packs; they are instead rendered on-device, saving bandwidth and storage while improving performance. ([#14176](https://github.com/mapbox/mapbox-gl-native/pull/14176)) +* Downloaded offline packs no longer reduce the storage space available for ambient caching of tiles and other resources. ([#15622](https://github.com/mapbox/mapbox-gl-native/pull/15622)) +* Added the `MLNMapView.prefetchesTiles` property to configure lower-resolution tile prefetching behavior. ([#14816](https://github.com/mapbox/mapbox-gl-native/pull/14816)) +* Added the `-[MLNOfflineStorage preloadData:forURL:modificationDate:expirationDate:eTag:mustRevalidate:completionHandler:]` method for determining when the data is ready to retrieve from the cache. ([#188](https://github.com/mapbox/mapbox-gl-native-ios/pull/188)) +* Fixed a crash when `-[MLNOfflinePack invalidate]` is called on different threads. ([#15582](https://github.com/mapbox/mapbox-gl-native/pull/15582)) +* Fixed issues where an offline pack would stop downloading before completion. ([#16230](https://github.com/mapbox/mapbox-gl-native/pull/16230), [#16240](https://github.com/mapbox/mapbox-gl-native/pull/16240)) +* When an offline pack encounters an HTTP 404 error, the `MLNOfflinePackUserInfoKeyError` user info key of the `MLNOfflinePackErrorNotification` now indicates the resource that could not be downloaded. ([#16240](https://github.com/mapbox/mapbox-gl-native/pull/16240)) +* Expired resources are now fetched at a lower priority than new resources. ([#15950](https://github.com/mapbox/mapbox-gl-native/pull/15950)) + +### Localization and internationalization + +* The `MLNIdeographicFontFamilyName` Info.plist key now also accepts an array of font family names, to customize font fallback behavior. It can also be set to a Boolean value of `NO` to force the SDK to typeset CJK characters in a remote font specified by `MLNSymbolStyleLayer.textFontNames`. ([#14862](https://github.com/mapbox/mapbox-gl-native/pull/14862)) +* The `MLNIdeographicFontFamilyName` Info.plist key can now be set to the display names or PostScript names of individual fonts. ([#189](https://github.com/mapbox/mapbox-gl-native-ios/pull/189)) +* The `-[MLNStyle localizeLabelsIntoLocale:]` and `-[NSExpression mgl_expressionLocalizedIntoLocale:]` methods can now localize text into Traditional Chinese and Vietnamese. ([#173](https://github.com/mapbox/mapbox-gl-native-ios/pull/173)) + +### Other changes + +* Fixed a memory leak when zooming with any options enabled in the `MLNMapView.debugMask` property. ([#15395](https://github.com/mapbox/mapbox-gl-native/pull/15395)) +* `MLNLoggingLevel` has been updated to better match core log levels. You can now use `MLNLoggingConfiguration.loggingLevel` to filter logs from core. ([#15120](https://github.com/mapbox/mapbox-gl-native/pull/15120)) + +## 0.14.0 - May 22, 2018 + +### Styles and rendering + +* Client-side text rendering of CJK ideographs is now enabled by default. ([#13988](https://github.com/mapbox/mapbox-gl-native/pull/13988)) +* Added an `MLNStyle.performsPlacementTransitions` property to control how long it takes for colliding labels to fade out. ([#13565](https://github.com/mapbox/mapbox-gl-native/pull/13565)) +* Added the `-[MLNShapeSource leavesOfCluster:offset:limit:]`, `-[MLNShapeSource childrenOfCluster:]`, `-[MLNShapeSource zoomLevelForExpandingCluster:]` methods for inspecting a cluster in an `MLNShapeSource`s created with the `MLNShapeSourceOptionClustered` option. Feature querying now returns clusters represented by `MLNPointFeatureCluster` objects (that conform to the `MLNCluster` protocol). ([#12952](https://github.com/mapbox/mapbox-gl-native/pull/12952) +* Fixed a crash when casting large numbers in `NSExpression`. ([#13580](https://github.com/mapbox/mapbox-gl-native/pull/13580)) +* Fixed an issue that caused `MLN_FUNCTION` to ignore multiple formatting parameters when passed a `format` function as parameter. ([#14064](https://github.com/mapbox/mapbox-gl-native/pull/14064)) +* Added `mgl_attributed:` expression operator, which concatenates `MLNAttributedExpression` objects for specifying rich text in the `MLNSymbolStyleLayer.text` property. ([#14094](https://github.com/mapbox/mapbox-gl-native/pull/14094)) +* Fixed an issue that caused conditional expressions to crash when passed nested conditional expressions as parameters. ([#14181](https://github.com/mapbox/mapbox-gl-native/pull/14181)) +* Fixed a possible crash with certain expressions containing arguments that evaluate to a dictionary containing `NSArray` or `NSNumber` values. ([#14352](https://github.com/mapbox/mapbox-gl-native/pull/14352)) +* Fixed a bug where non-opaque `NSColor` values were ignored when assigned to a style layer color property. ([#14406](https://github.com/mapbox/mapbox-gl-native/pull/14406)) +* Fixed a bug where some layers weren’t rendering correctly after panning. ([#14527](https://github.com/mapbox/mapbox-gl-native/pull/14527)) +* Changed placement order of `MLNSymbolStyleLayer` to match the viewport-y order when `MLNSymbolStyleLayer.symbolZOrder` is set to `MLNSymbolZOrderViewportY`, allowing icons to overlap but not text. ([#14486](https://github.com/mapbox/mapbox-gl-native/pull/14486)) + +### Other changes + +* Added Czech and Galician localizations. ([#13782](https://github.com/mapbox/mapbox-gl-native/pull/13782), [#14095](https://github.com/mapbox/mapbox-gl-native/pull/14095)) +* Added `MLNNetworkConfiguration` class to customize the SDK’s `NSURLSessionConfiguration` object. ([#13886](https://github.com/mapbox/mapbox-gl-native/pull/13886)) +* Fixed a bug with `MLNMapView.visibleAnnotations` that resulted in incorrect results and performance degradation. ([#13745](https://github.com/mapbox/mapbox-gl-native/pull/13745)) +* Fixed a bug where selecting partially on-screen annotations (without a callout) would move the map. ([#13727](https://github.com/mapbox/mapbox-gl-native/pull/13727)) +* Fixed a bug that caused offline packs created prior to v0.7.0 (introduced in [#11055](https://github.com/mapbox/mapbox-gl-native/pull/11055)) to be marked as `MLNOfflinePackStateInactive`. ([#14188](https://github.com/mapbox/mapbox-gl-native/pull/14188)) + +## 0.13.0 - December 20, 2018 + +### Packaging + +* This SDK’s dynamic framework now has a bundle identifier of `com.mapbox.Mapbox`. ([#12857](https://github.com/mapbox/mapbox-gl-native/pull/12857)) +* `MLNMapView`, `MLNShapeOfflineRegion`, and `MLNTilePyramidOfflineRegion` now default to version 11 of the Mapbox Streets style. Similarly, several class properties of `MLNStyle`, such as `MLNStyle.lightStyleURL`, have been updated to return URLs to new versions of their respective styles. ([#13585](https://github.com/mapbox/mapbox-gl-native/pull/13585)) + +### Styles and rendering + +* Fixed an issue where the `{prefix}` token in tile URL templates was evaluated incorrectly when requesting a source’s tiles. ([#13429](https://github.com/mapbox/mapbox-gl-native/pull/13429)) +* Added an `-[MLNStyle removeSource:error:]` method that returns a descriptive error if the style fails to remove the source, whereas `-[MLNStyle removeSource:]` fails silently. ([#13399](https://github.com/mapbox/mapbox-gl-native/pull/13399)) +* Added the `MLNFillExtrusionStyleLayer.fillExtrusionHasVerticalGradient` property. ([#13463](https://github.com/mapbox/mapbox-gl-native/pull/13463)) +* Added support for setting `MLNCollisionBehaviorPre4_0` in `NSUserDefaults`. ([#13426](https://github.com/mapbox/mapbox-gl-native/pull/13426)) +* `-[MLNStyle localizeLabelsIntoLocale:]` and `-[NSExpression(MLNAdditions) mgl_expressionLocalizedIntoLocale:]` can automatically localize styles that use version 8 of the Mapbox Streets source. ([#13481](https://github.com/mapbox/mapbox-gl-native/pull/13481)) +* Fixed symbol flickering during instantaneous transitions. ([#13535](https://github.com/mapbox/mapbox-gl-native/pull/13535)) +* Fixed a crash when specifying `MLNShapeSourceOptionLineDistanceMetrics` when creating an `MLNShapeSource`. ([#13543](https://github.com/mapbox/mapbox-gl-native/pull/13543)) + +### Other changes + +* Renamed `-[MLNOfflineStorage putResourceWithUrl:data:modified:expires:etag:mustRevalidate:]` to `-[MLNOfflineStorage preloadData:forURL:modificationDate:expirationDate:eTag:mustRevalidate:]`. ([#13318](https://github.com/mapbox/mapbox-gl-native/pull/13318)) +* `MLNMapSnapshotter` now respects the `MLNIdeographicFontFamilyName` key in Info.plist, which reduces bandwidth consumption when snapshotting regions that contain Chinese or Japanese characters. ([#13427](https://github.com/mapbox/mapbox-gl-native/pull/13427)) +* Added `MLNLoggingConfiguration` and `MLNLoggingBlockHandler` that handle error and fault events produced by the SDK. ([#13235](https://github.com/mapbox/mapbox-gl-native/pull/13235)) + +## 0.12.0 - November 8, 2018 + +### Styles and rendering + +* `MLNSymbolStyleLayer.text` can now be set to rich text with varying fonts and text sizes. ([#12624](https://github.com/mapbox/mapbox-gl-native/pull/12624)) +* Added an `MLNSymbolStyleLayer.symbolZOrder` property for forcing point features in a symbol layer to be layered in the same order that they are specified in the layer’s associated source. ([#12783](https://github.com/mapbox/mapbox-gl-native/pull/12783)) +* Fixed a crash when the `MLNBackgroundStyleLayer.backgroundPattern`, `MLNFillExtrusionStyleLayer.fillExtrusionPattern`, `MLNFillStyleLayer.fillPattern`, or `MLNLineStyleLayer.linePattern` property evaluates to `nil` for a particular feature. ([#12896](https://github.com/mapbox/mapbox-gl-native/pull/12896)) +* Fixed a crash when using the `MLN_LET`, `MLN_MATCH`, `MLN_IF`, or `MLN_FUNCTION` functions without a colon inside an `NSExpression` or `NSPredicate` format string. ([#13189](https://github.com/mapbox/mapbox-gl-native/pull/13189)) +* Fixed a crash setting the `MLNLineStyleLayer.lineGradient` property to an expression containing the `$lineProgress` variable. Added an `NSExpression.lineProgressVariableExpression` class property that returns an expression for the `$lineProgress` variable. ([#13192](https://github.com/mapbox/mapbox-gl-native/pull/13192)) +* Fixed an issue where features in `MLNFillStyleLayer` and `MLNLineStyleLayer` would occasionally flicker when zooming in and out. ([#12982](https://github.com/mapbox/mapbox-gl-native/pull/12982)) +* Feature querying can now return point features represented by icons that have both the `MLNSymbolStyleLayer.iconRotation` and `MLNSymbolStyleLayer.iconOffset` properties applied. ([#13105](https://github.com/mapbox/mapbox-gl-native/pull/13105)) +* Fixed a crash when casting an `NSColor` to an `NSColor` inside an `NSExpression`. ([#12864](https://github.com/mapbox/mapbox-gl-native/pull/12864)) +* `NIL` cast to an `NSNumber` now evaluates to 0 inside an `NSExpression`. ([#12864](https://github.com/mapbox/mapbox-gl-native/pull/12864)) +* Fixed a crash when applying the `to-array` operator to an empty array inside a JSON expression. ([#12864](https://github.com/mapbox/mapbox-gl-native/pull/12864)) +* Added the `MLNCollisionBehaviorPre4_0` Info.plist key to restore the collision detection behavior in version 0.6 of the SDK. ([#12941](https://github.com/mapbox/mapbox-gl-native/pull/12941)) + +### Offline maps + +* Network requests by `MLNMapView` are now prioritized over offline pack downloads. ([#13019](https://github.com/mapbox/mapbox-gl-native/pull/13019)) +* Added `-[MLNOfflineStorage addContentsOfFile:withCompletionHandler:]` and `-[MLNOfflineStorage addContentsOfURL:withCompletionHandler:]` methods to add pregenerated offline packs to offline storage. ([#12791](https://github.com/mapbox/mapbox-gl-native/pull/12791)) +* Added the `-[MLNOfflineStorage putResourceWithUrl:data:modified:expires:etag:mustRevalidate:]` method to allow pre-warming of the ambient cache. ([#13119](https://github.com/mapbox/mapbox-gl-native/pull/13119)) +* Fixed an issue where some tiles were rendered incorrectly when the device was unable to connect to the Internet. ([#12931](https://github.com/mapbox/mapbox-gl-native/pull/12931)) + +### Other changes + +* Added `MLNAltitudeForZoomLevel()` and `MLNZoomLevelForAltitude()` methods for converting between zoom levels used by `MLNMapView` and altitudes used by `MLNMapCamera`. ([#12986](https://github.com/mapbox/mapbox-gl-native/pull/12986)) +* Deprecated the `+[MLNMapCamera cameraLookingAtCenterCoordinate:fromDistance:pitch:heading:]` method in favor of `+[MLNMapCamera cameraLookingAtCenterCoordinate:altitude:pitch:heading:]` and `+[MLNMapCamera cameraLookingAtCenterCoordinate:acrossDistance:pitch:heading:]`. ([#12966](https://github.com/mapbox/mapbox-gl-native/pull/12966)) +* Fixed an issue where `+[MLNMapCamera cameraLookingAtCenterCoordinate:fromEyeCoordinate:eyeAltitude:]` created a camera looking from the wrong eye coordinate. ([#12966](https://github.com/mapbox/mapbox-gl-native/pull/12966)) +* Added an `MLNMapCamera.viewingDistance` property based on the existing `MLNMapCamera.altitude` property. ([#12966](https://github.com/mapbox/mapbox-gl-native/pull/12966)) +* Fixed an issue where the map view could not be panned after setting `MLNMapView.visibleCoordinateBounds` to a coordinate bounds that spanned exactly the longitudes −180° and 180°. ([#13006](https://github.com/mapbox/mapbox-gl-native/pull/13006)) +* Fixed an issue where `-[MLNMapSnapshotter startWithQueue:completionHandler:]` failed to call its completion handler in some cases. ([#12355](https://github.com/mapbox/mapbox-gl-native/pull/12355)) +* Fixed an issue where snapshots had the wrong heading and pitch. ([#13123](https://github.com/mapbox/mapbox-gl-native/pull/13123)) +* Fixed an issue where `MLNMapView` produced a designable error in Interface Builder storyboards in Xcode 10. ([#12883](https://github.com/mapbox/mapbox-gl-native/pull/12883)) + +## 0.11.0 - September 13, 2018 + +### Styles and rendering + +* When a symbol in an `MLNSymbolStyleLayer` has both an icon and text, both are shown or hidden together based on available space. ([#12521](https://github.com/mapbox/mapbox-gl-native/pull/12521)) +* Invalid values of `MLNSymbolStyleLayer.textFontNames` are treated as warnings instead of errors. ([#12414](https://github.com/mapbox/mapbox-gl-native/pull/12414)) +* Added an `MLNLineStyleLayer.lineGradient` property that can be used to define a gradient with which to color a line feature. ([#12575](https://github.com/mapbox/mapbox-gl-native/pull/12575)) +* The `MLNLineStyleLayer.linePattern`, `MLNFillStyleLayer.fillPattern`, and `MLNFillStyleLayer.fillExtrusionPattern` properties can now be set to expressions that refer to feature attributes. ([#12284](https://github.com/mapbox/mapbox-gl-native/pull/12284)) +* Reduced the amount of memory consumed by font data after changing the style. ([#12414](https://github.com/mapbox/mapbox-gl-native/pull/12414)) +* `-[MLNShapeSource initWithIdentifier:shape:options:]` and `-[MLNComputedShapeSource setFeatures:inTileAtX:y:zoomLevel:]` warn about possible attribute loss when passing in an `MLNShapeCollection` object. ([#12625](https://github.com/mapbox/mapbox-gl-native/pull/12625)) +* Added an `MLNShapeSourceOptionLineDistanceMetrics` option that enables or disables calculating line distance metrics. ([#12604](https://github.com/mapbox/mapbox-gl-native/pull/12604)) +* Fixed an issue where the `cubic-bezier` curve type for `mgl_interpolate:withCurveType:parameters:stops:` expressions was misinterpreted for some style layer properties. ([#12826](https://github.com/mapbox/mapbox-gl-native/pull/12826)) +* Fixed an issue that could cause symbols to fade in during pan operations instead of always showing when using `MLNSymbolStyleLayer.iconAllowsOverlap` or `MLNSymbolStyleLayer.textAllowsOverlap` properties. ([#12698](https://github.com/mapbox/mapbox-gl-native/pull/12698)) + +### Offline maps + +* Added the `MLNShapeOfflineRegion` class for creating an offline pack that covers an arbitrary shape. ([#11447](https://github.com/mapbox/mapbox-gl-native/pull/11447)) +* Fixed crashes when offline storage encountered certain SQLite errors. ([#12224](https://github.com/mapbox/mapbox-gl-native/pull/12224)) + +### Other changes + +* The `-[MLNMapView annotationAtPoint:]` method can now return annotations near tile boundaries at high zoom levels. ([#12570](https://github.com/mapbox/mapbox-gl-native/pull/12570)) +* Added an `-[MLNMapViewDelegate mapView:shapeAnnotationIsEnabled:]` method to specify whether an annotation is selectable. ([#12352](https://github.com/mapbox/mapbox-gl-native/pull/12352)) +* Fixed inconsistencies in exception naming. ([#12583](https://github.com/mapbox/mapbox-gl-native/issues/12583)) +* Fixed an issue where `-[MLNMapView convertCoordinateBounds:toRectToView:]` would return an empty CGRect if the bounds crossed the antimeridian. ([#12758](https://github.com/mapbox/mapbox-gl-native/pull/12758)) + +## 0.10.0 - August 15, 2018 + +## Styles and rendering + +* Token string syntax (`"{token}"`) in `MLNSymbolStyleLayer` `text` and `iconImageName` properties is now correctly converted to the appropriate `NSExpression` equivalent. ([#11659](https://github.com/mapbox/mapbox-gl-native/issues/11659)) +* Fixed a crash when switching between two styles having layers with the same identifier but different layer types. ([#12432](https://github.com/mapbox/mapbox-gl-native/issues/12432)) +* Added a new option to `MLNSymbolPlacement`, `MLNSymbolPlacementLineCenter`, that places the label relative to the center of the geometry. ([#12337](https://github.com/mapbox/mapbox-gl-native/pull/12337)) + +## Other changes + +* Fixed an issue where the symbols for `MLNMapPointForCoordinate` could not be found. ([#12445](https://github.com/mapbox/mapbox-gl-native/issues/12445)) +* Fixed an issue causing country and ocean labels to disappear after calling `-[MLNStyle localizeLabelsIntoLocale:]` when the system language is set to Simplified Chinese. ([#12164](https://github.com/mapbox/mapbox-gl-native/issues/12164)) +* Closed a security vulnerability introduced in 0.8.0 that would potentially allow the owner of a style to compromise apps loading that style. ([#12571](https://github.com/mapbox/mapbox-gl-native/pull/12571)) + +## 0.9.0 - July 18, 2018 + +## Styles and rendering + +* Added an `MLNRasterStyleLayer.rasterResamplingMode` property for configuring how raster style layers are overscaled. ([#12176](https://github.com/mapbox/mapbox-gl-native/pull/12176)) +* `-[MLNStyle localizeLabelsIntoLocale:]` and `-[NSExpression mgl_expressionLocalizedIntoLocale:]` can automatically localize labels into Japanese or Korean based on the system’s language settings. ([#12286](https://github.com/mapbox/mapbox-gl-native/pull/12286)) +* The `c` and `d` options are supported within comparison predicates for case and diacritic insensitivity, respectively. ([#12329](https://github.com/mapbox/mapbox-gl-native/pull/12329)) +* Added the `collator` and `resolved-locale` expression operators to more precisely compare strings in style JSON. A subset of this functionality is available through predicate options when creating an `NSPredicate`. ([#11869](https://github.com/mapbox/mapbox-gl-native/pull/11869)) +* Fixed a crash in `-[MLNStyle localizeLabelsIntoLocale:]` on macOS 10.11. ([#12123](https://github.com/mapbox/mapbox-gl-native/pull/12123)) +* Fixed a crash that occurred when creating an `MLN_MATCH` expression using non-expressions as arguments. ([#12332](https://github.com/mapbox/mapbox-gl-native/pull/12332)) +* Fixed a crash when trying to parse expressions containing legacy filters. ([#12263](https://github.com/mapbox/mapbox-gl-native/pull/12263)) + +## Other changes + +* Added `-[MLNMapView camera:fittingShape:edgePadding:]` and `-[MLNMapView camera:fittingCoordinateBounds:edgePadding:]` allowing you specify the pitch and direction for the calculated camera. ([#12213](https://github.com/mapbox/mapbox-gl-native/pull/12213)) +* Added `-[MLNMapSnapshot coordinateForPoint:]` that returns a map coordinate for a specified snapshot image point. ([#12221](https://github.com/mapbox/mapbox-gl-native/pull/12221)) +* Fixed an issue where `-[MLNMapShapshot pointForCoordinate:]` returned incorrect points. ([#12221](https://github.com/mapbox/mapbox-gl-native/pull/12221)) +* Improved caching performance. ([#12072](https://github.com/mapbox/mapbox-gl-native/pull/12072)) +* Remove unnecessary memory use when collision debug mode is disabled. ([#12294](https://github.com/mapbox/mapbox-gl-native/issues/12294)) + +## 0.8.0 - June 20, 2018 + +### Packaging + +* The minimum deployment target for this SDK is now macOS 10.11.0. ([#11776](https://github.com/mapbox/mapbox-gl-native/pull/11776)) +* Fixed an issue where `MLNMapView` produced a designable error in Interface Builder storyboards. ([#12140](https://github.com/mapbox/mapbox-gl-native/pull/12140)) + +### Styles and rendering + +* Added support for aggregate expressions as input values to `MLN_MATCH` expressions. ([#11866](https://github.com/mapbox/mapbox-gl-native/pull/11866)) +* Fixed a crash that occurred when style JSON contained an invalid filter containing an expression. ([#12065](https://github.com/mapbox/mapbox-gl-native/pull/12065)) +* Fixed a crash in `-[MLNStyle localizeLabelsIntoLocale:]` on macOS 10.11. ([#12123](https://github.com/mapbox/mapbox-gl-native/pull/12123)) +* Unknown tokens in URLs are now preserved, rather than replaced with an empty string. ([#11787](https://github.com/mapbox/mapbox-gl-native/issues/11787)) +* Fixed an issue preventing nested key path expressions from accessing the correct feature attributes. ([#11959](https://github.com/mapbox/mapbox-gl-native/pull/11959)) +* Fixed an issue where `MLNSymbolStyleLayer` flickered when straddling the antimeridian. ([#11938](https://github.com/mapbox/mapbox-gl-native/pull/11938)) + +### Other changes + +* Adjusted when and how the camera transition update and finish callbacks are called, fixing recursion bugs. ([#11614](https://github.com/mapbox/mapbox-gl-native/pull/11614)) +* Fixed a crash that could occur when reusing `MLNMapSnapshotter` or using multiple snapshotters at the same time. ([#11831](https://github.com/mapbox/mapbox-gl-native/pull/11831)) +* Fixed an issue where an empty `MLNFeature` array caused high CPU utilization. ([#11985](https://github.com/mapbox/mapbox-gl-native/pull/11985)) +* Improved offline download performance. ([#11284](https://github.com/mapbox/mapbox-gl-native/pull/11284)) +* Fixed an issue that caused -[MLNMapView visibleFeaturesAtPoint:] to return an empty array when adding or removing features. ([#12076](https://github.com/mapbox/mapbox-gl-native/pull/12076)) + +## 0.7.1 - May 15, 2018 + +### Style layers + +* Deprecated `+[NSExpression featurePropertiesVariableExpression]`; use `+[NSExpression featureAttributesVariableExpression]` instead. ([#11748](https://github.com/mapbox/mapbox-gl-native/pull/11748)) +* Added an `-[NSPredicate(MLNAdditions) predicateWithMLNJSONObject:]` method and `NSPredicate.mgl_jsonExpressionObject` property. ([#11810](https://github.com/mapbox/mapbox-gl-native/pull/11810)) +* Added `FIRST`, `LAST`, and `SIZE` symbolic array subscripting support to expressions. ([#11770](https://github.com/mapbox/mapbox-gl-native/pull/11770)) +* Inside an expression, casting `nil` to a string turns it into the empty string instead of the string `"null"`. ([#11904](https://github.com/mapbox/mapbox-gl-native/pull/11904)) +* Fixed an issue where certain colors were being misrepresented in `NSExpression` obtained from `MLNStyleLayer` getters. ([#11725](https://github.com/mapbox/mapbox-gl-native/pull/11725)) + +### Annotations + +* Fixed an issue where selecting an onscreen annotation could move the map unintentionally. ([#11731](https://github.com/mapbox/mapbox-gl-native/pull/11731)) +* Fixed an issue where an `MLNOverlay` object straddling the antimeridian had an empty `MLNOverlay.overlayBounds` value. ([#11783](https://github.com/mapbox/mapbox-gl-native/pull/11783)) + +### Other changes + +* Reduced per-frame render CPU time. ([#11811](https://github.com/mapbox/mapbox-gl-native/issues/11811)) +* Fixed a crash when removing an `MLNOfflinePack`. ([#6092](https://github.com/mapbox/mapbox-gl-native/issues/6092)) +* If English is the first language listed in the user’s Preferred Languages setting, `-[MLNStyle localizeLabelsIntoLocale:]` no longer prioritizes other languages over English. ([#11907](https://github.com/mapbox/mapbox-gl-native/pull/11907)) + +## 0.7.0 - April 19, 2018 + +The 0.7._x_ series of releases will be the last to support macOS 10.10. The minimum macOS deployment version will increase to macOS 10.11.0 in a future release. + +### Packaging + +* Added Arabic, Danish, Hebrew, and European Portuguese localizations. ([#10967](https://github.com/mapbox/mapbox-gl-native/pull/10967), [#11136](https://github.com/mapbox/mapbox-gl-native/pull/11134), [#11695](https://github.com/mapbox/mapbox-gl-native/pull/11695)) +* Removed methods, properties, and constants that had been deprecated as of v0.6.1. ([#11205](https://github.com/mapbox/mapbox-gl-native/pull/11205)) +* Refined certain Swift interfaces by converting them from class methods to class properties. ([#11674](https://github.com/mapbox/mapbox-gl-native/pull/11674)) + +### Style layers + +* The layout and paint properties on subclasses of `MLNStyleLayer` are now of type `NSExpression` instead of `MLNStyleValue`. A new “Predicates and Expressions” guide provides an overview of the supported operators, which include arithmetic and conditional operators. ([#10726](https://github.com/mapbox/mapbox-gl-native/pull/10726)) +* A style can now display a heatmap layer that visualizes a point data distribution. You can customize the appearance at runtime using the `MLNHeatmapStyleLayer` class. ([#11046](https://github.com/mapbox/mapbox-gl-native/pull/11046)) +* A style can now display a smooth hillshading layer and customize its appearance at runtime using the `MLNHillshadeStyleLayer` class. Hillshading is based on a rasterized digital elevation model supplied by the `MLNRasterDEMSource` class. ([#10642](https://github.com/mapbox/mapbox-gl-native/pull/10642)) +* You can now set the `MLNVectorStyleLayer.predicate` property to a predicate that contains arithmetic and calls to built-in `NSExpression` functions. You may need to cast a feature attribute key to `NSString` or `NSNumber` before comparing it to a string or number. ([#11587](https://github.com/mapbox/mapbox-gl-native/pull/11587)) +* Replaced the `MLNStyle.localizesLabels` property with an `-[MLNStyle localizeLabelsIntoLocale:]` method that allows you to specify the language to localize into. Note that this method does not automatically update the style when the system’s preferred language changes. Also added an `-[NSExpression(MLNAdditions) mgl_expressionLocalizedIntoLocale:]` method for localizing an individual value used with `MLNSymbolStyleLayer.text`. ([#11651](https://github.com/mapbox/mapbox-gl-native/pull/11651)) +* Fixed incorrect color calibration on macOS 10.13 High Sierra when using color-related methods of `MLNStyleLayer` subclasses, as well as when displaying an `MLNAttributionInfo`. It is no longer necessary to explicitly convert an `NSColor` to the sRGB color space before using these classes on High Sierra. ([#11391](https://github.com/mapbox/mapbox-gl-native/pull/11391)) +* The `MLNSymbolStyleLayer.textFontNames` property can now depend on a feature’s attributes. ([#10850](https://github.com/mapbox/mapbox-gl-native/pull/10850)) +* Changes to the `MLNStyleLayer.minimumZoomLevel` and `MLNStyleLayer.maximumZoomLevel` properties take effect immediately. ([#11399](https://github.com/mapbox/mapbox-gl-native/pull/11399)) + +### Content sources + +* Renamed `MLNRasterSource` to `MLNRasterTileSource` and `MLNVectorSource` to `MLNVectorTileSource`. ([#11568](https://github.com/mapbox/mapbox-gl-native/pull/11568)) +* Added an `MLNComputedShapeSource` class that allows applications to supply vector data to a style layer on a per-tile basis. ([#9983](https://github.com/mapbox/mapbox-gl-native/pull/9983)) +* Properties such as `MLNSymbolStyleLayer.iconAllowsOverlap` and `MLNSymbolStyleLayer.iconIgnoresPlacement` now account for symbols in other sources. ([#10436](https://github.com/mapbox/mapbox-gl-native/pull/10436)) + +### Map rendering + +* Improved the reliability of collision detection between symbols near the edges of tiles, as well as between symbols when the map is tilted. It is no longer necessary to enable `MLNSymbolStyleLayer.symbolAvoidsEdges` to prevent symbols in adjacent tiles from overlapping with each other. ([#10436](https://github.com/mapbox/mapbox-gl-native/pull/10436)) +* Symbols can fade in and out as the map pans, rotates, or tilts. ([#10436](https://github.com/mapbox/mapbox-gl-native/pull/10436)) +* Properties such as `MLNSymbolStyleLayer.iconAllowsOverlap` and `MLNSymbolStyleLayer.iconIgnoresPlacement` now account for symbols in other sources. ([#10436](https://github.com/mapbox/mapbox-gl-native/pull/10436)) +* Added the `MLNTileSourceOptionTileCoordinateBounds` option to create an `MLNTileSource` that only supplies tiles within a specific geographic bounding box. ([#11141](https://github.com/mapbox/mapbox-gl-native/pull/11141)) +* Fixed an issue preventing a dynamically-added `MLNRasterStyleLayer` from drawing until the map pans. ([#10270](https://github.com/mapbox/mapbox-gl-native/pull/10270)) +* Fixed an issue preventing `MLNImageSource`s from drawing on the map when the map is zoomed in and tilted. ([#10677](https://github.com/mapbox/mapbox-gl-native/pull/10677)) +* Improved the sharpness of raster tiles on Retina displays. ([#10984](https://github.com/mapbox/mapbox-gl-native/pull/10984)) +* Fixed a crash parsing a malformed style. ([#11001](https://github.com/mapbox/mapbox-gl-native/pull/11001)) +* Fixed an issue where symbols with empty labels would always be hidden. ([#11206](https://github.com/mapbox/mapbox-gl-native/pull/11206)) +* Fixed an issue where a tilted map could flicker while displaying rotating symbols. ([#11488](https://github.com/mapbox/mapbox-gl-native/pull/11488)) +* Increased the maximum width of labels by a factor of two. ([#11508](https://github.com/mapbox/mapbox-gl-native/pull/11508)) + +### Annotations + +* Fixed an issue where tapping a group of annotations may not have selected the nearest annotation. ([#11438](https://github.com/mapbox/mapbox-gl-native/pull/11438)) +* The `MLNMapView.selectedAnnotations` property (backed by `-[MLNMapView setSelectedAnnotations:]`) now selects annotations that are off-screen. ([#9790](https://github.com/mapbox/mapbox-gl-native/issues/9790)) +* The `animated` parameter to `-[MLNMapView selectAnnotation:animated:]` now controls whether the annotation and its callout are brought on-screen. If `animated` is `NO` then the annotation is selected if offscreen, but the map is not panned. Currently only point annotations are supported.([#3249](https://github.com/mapbox/mapbox-gl-native/issues/3249)) +* Fixed a crash when rapidly adding and removing annotations. ([#11551](https://github.com/mapbox/mapbox-gl-native/issues/11551), [#11575](https://github.com/mapbox/mapbox-gl-native/issues/11575)) + +### Map snapshots + +* Fixed a memory leak that occurred when creating a map snapshot. ([#10585](https://github.com/mapbox/mapbox-gl-native/pull/10585)) +* Fixed an issue that caused `MLNMapSnapshotter.pointForCoordinate` to return an incorrect value. ([#11035](https://github.com/mapbox/mapbox-gl-native/pull/11035)) + +### Other changes + +* The `-[MLNMapView convertRect:toCoordinateBoundsFromView:]` method and the `MLNMapView.visibleCoordinateBounds` property’s getter now indicate that the coordinate bounds straddles the antimeridian by extending one side beyond ±180 degrees longitude. ([#11265](https://github.com/mapbox/mapbox-gl-native/pull/11265)) +* Feature querying results now account for the `MLNSymbolStyleLayer.circleStrokeWidth` property. ([#10897](https://github.com/mapbox/mapbox-gl-native/pull/10897)) +* Reduced offline download sizes for styles with symbol layers that render only icons, and no text. ([#11055](https://github.com/mapbox/mapbox-gl-native/pull/11055)) + +## v0.6.1 - January 16, 2018 + +This version of the Mapbox macOS SDK corresponds to version 3.7.3 of the Mapbox Maps SDK for iOS. + +* Fixed a crash while zooming while annotations are present on the map. ([#10791](https://github.com/mapbox/mapbox-gl-native/pull/10791)) +* CJK characters can be displayed in a locally installed font or a custom font bundled with the application, reducing map download times. Specify the font name using the `MLNIdeographicFontFamilyName` key in the application’s Info.plist file. ([#10522](https://github.com/mapbox/mapbox-gl-native/pull/10522)) + +## v0.6.0 - December 23, 2017 + +This version of the Mapbox macOS SDK corresponds to version 3.7.2 of the Mapbox Maps SDK for iOS. + +### Packaging + +* Renamed this SDK from Mapbox macOS SDK to Mapbox Maps SDK for macOS. ([#10610](https://github.com/mapbox/mapbox-gl-native/pull/10610), [#10793](https://github.com/mapbox/mapbox-gl-native/pull/10793)) +* Added a Bulgarian localization. ([#10309](https://github.com/mapbox/mapbox-gl-native/pull/10309)) + +### Networking and storage + +* Added a new `MLNMapSnapshotter` class for capturing rendered map images from an `MLNMapView`’s camera. ([#9891](https://github.com/mapbox/mapbox-gl-native/pull/9891)) +* Reduced the time it takes to create new `MLNMapView` instances in some cases. ([#9864](https://github.com/mapbox/mapbox-gl-native/pull/9864)) +* Added support for forced cache revalidation that will eliminate flickering that was sometimes visible for certain types of tiles (e.g., traffic tiles). ([#9670](https://github.com/mapbox/mapbox-gl-native/pull/9670), [#9103](https://github.com/mapbox/mapbox-gl-native/issues/9103)) +* Improved the performance of the SDK when parsing vector tile data used to render the map. ([#9312](https://github.com/mapbox/mapbox-gl-native/pull/9312)) + +### Styles + +* Added a new type of source, represented by the `MLNImageSource` class at runtime, that displays a georeferenced image. ([#9110](https://github.com/mapbox/mapbox-gl-native/pull/9110)) +* Setting a style using `MLNMapView`'s `styleURL` property now smoothly transitions from the previous style to the new style and maintains equivalent layers and sources along with their identifiers. ([#9256](https://github.com/mapbox/mapbox-gl-native/pull/9256)) +* Added `MLNCircleStyleLayer.circlePitchAlignment` and `MLNSymbolStyleLayer.iconPitchAlignment` properties to control whether circles and symbols lie flat against a tilted map. ([#9426](https://github.com/mapbox/mapbox-gl-native/pull/9426), [#9479](https://github.com/mapbox/mapbox-gl-native/pull/9479)) +* Added an `MLNSymbolStyleLayer.iconAnchor` property to control where an icon is anchored. ([#9849](https://github.com/mapbox/mapbox-gl-native/pull/9849)) +* The `maximumTextWidth` and `textLetterSpacing` properties of `MLNSymbolStyleLayer` are now compatible with `MLNSourceStyleFunction`s and `MLNCompositeStyleFunction`s, allowing data-driven styling of these properties. ([#9870](https://github.com/mapbox/mapbox-gl-native/pull/9870)) +* Improved the legibility of labels that follow lines when the map is tilted. ([#9009](https://github.com/mapbox/mapbox-gl-native/pull/9009)) +* Fixed an issue that could cause flickering when a translucent raster style layer was present. ([#9468](https://github.com/mapbox/mapbox-gl-native/pull/9468)) +* Fixed an issue that could cause antialiasing between polygons on the same layer to fail if the fill layers used data-driven styling for the fill color. ([#9699](https://github.com/mapbox/mapbox-gl-native/pull/9699)) +* The previously deprecated support for style classes has been removed. For interface compatibility, the API methods remain, but they are now non-functional. + +### Annotations and user interaction + +* Fixed several bugs and performance issues related to the use of annotations backed by `MLNAnnotationImage`s. The limits on the number and size of images and glyphs has been effectively eliminated and should now depend on hardware constraints. These fixes also apply to images used to represent icons in `MLNSymbolStyleLayer`s. ([#9213](https://github.com/mapbox/mapbox-gl-native/pull/9213)) +* Increased the default maximum zoom level from 20 to 22. ([#9835](https://github.com/mapbox/mapbox-gl-native/pull/9835)) +* Added an `overlays` property to `MLNMapView`. ([#8617](https://github.com/mapbox/mapbox-gl-native/pull/8617)) +* Fixed incorrect hit targets for `MLNAnnotationImage`-backed annotations that caused `-[MLNMapViewDelegate mapView:didSelectAnnotation:]` to be called unnecessarily. ([#10538](https://github.com/mapbox/mapbox-gl-native/pull/10538)) +* Added `-[MLNMapView cameraThatFitsShape:direction:edgePadding:]` to get a camera with zoom level and center coordinate computed to fit a shape. ([#10107](https://github.com/mapbox/mapbox-gl-native/pull/10107)) +* Added support selection of shape and polyline annotations.([#9984](https://github.com/mapbox/mapbox-gl-native/pull/9984)) +* Fixed an issue where a shape annotation callout was not displayed if the centroid was not visible. ([#10255](https://github.com/mapbox/mapbox-gl-native/pull/10255)) + +### Other changes + +* Fixed distortion in the logo view on macOS 10.13 High Sierra. ([#10606](https://github.com/mapbox/mapbox-gl-native/pull/10606)) +* Fixed an issue that could cause line label rendering glitches when the line geometry is projected to a point behind the plane of the camera. ([#9865](https://github.com/mapbox/mapbox-gl-native/pull/9865)) +* Fixed an issue that could cause a crash when using `-[MLNMapView flyToCamera:completionHandler:]` and related methods with zoom levels at or near the maximum value. ([#9381](https://github.com/mapbox/mapbox-gl-native/pull/9381)) +* Fixed an issue where removing a `MLNOpenGLStyleLayer` from a map might result in a crash. ([#10765](https://github.com/mapbox/mapbox-gl-native/pull/10765)) +* Added documentation for usage of coordinate bounds that cross the anti-meridian. ([#10783](https://github.com/mapbox/mapbox-gl-native/pull/10783)) +* Removed duplicated variables in `MLNMapSnapshotter`. ([#10702](https://github.com/mapbox/mapbox-gl-native/pull/10702)) + +## 0.5.1 - September 26, 2017 + +This version of the Mapbox macOS SDK corresponds to version 3.6.4 of the Mapbox iOS SDK. + +* Added an `MLNStyle.localizesLabels` property, off by default, that localizes any Mapbox Streets–sourced symbol layer into the user’s preferred language. ([#9582](https://github.com/mapbox/mapbox-gl-native/pull/9582)) +* Fixed an issue that caused `-[MLNShapeSource featuresMatchingPredicate:]` and `-[MLNVectorSource featuresInSourceLayersWithIdentifiers:predicate:]` to always return an empty array. ([#9784](https://github.com/mapbox/mapbox-gl-native/pull/9784)) +* `MLNMapView`’s `minimumZoomLevel` and `maximumZoomLevel` properties are now available in Interface Builder’s Attributes inspector. ([#9729](https://github.com/mapbox/mapbox-gl-native/pull/9729)) +* Added a Hungarian localization. ([#9945](https://github.com/mapbox/mapbox-gl-native/pull/9945)) +* Deprecated `+[MLNStyle trafficDayStyleURL]` and `+[MLNStyle trafficNightStyleURL]` with no replacement method. To use the Traffic Day and Traffic Night styles going forward, we recommend that you use the underlying URL. ([#9918](https://github.com/mapbox/mapbox-gl-native/pull/9918)) +* Fixed an issue where stale (but still valid) map data could be ignored in offline mode. ([#10012](https://github.com/mapbox/mapbox-gl-native/pull/10012)) + +## 0.5.0 - June 30, 2017 + +This version of the Mapbox macOS SDK corresponds to version 3.6.0 of the Mapbox iOS SDK. + +### Packaging + +* Xcode 8.0 or higher is now recommended for using this SDK. ([#8775](https://github.com/mapbox/mapbox-gl-native/pull/8775)) +* Updated MLNMapView’s logo view to display [the new Mapbox logo](https://www.mapbox.com/blog/new-mapbox-logo/). ([#8771](https://github.com/mapbox/mapbox-gl-native/pull/8771), [#8773](https://github.com/mapbox/mapbox-gl-native/pull/8773)) + +### Styles + +* Added support for 3D extrusion of buildings and other polygonal features via the `MLNFillExtrusionStyleLayer` class and the `fill-extrusion` layer type in style JSON. ([#8431](https://github.com/mapbox/mapbox-gl-native/pull/8431)) +* MLNMapView and MLNTilePyramidOfflineRegion now default to version 10 of the Mapbox Streets style. Similarly, several style URL class methods of MLNStyle return URLs to version 10 styles. Unversioned variations of these methods are no longer deprecated. `MLNStyleDefaultVersion` should no longer be used with any style other than Streets. ([#6301](https://github.com/mapbox/mapbox-gl-native/pull/6301)) +* Added class methods to MLNStyle that correspond to the new [Traffic Day and Traffic Night](https://www.mapbox.com/blog/live-traffic-maps/) styles. ([#6301](https://github.com/mapbox/mapbox-gl-native/pull/6301)) +* MLNSymbolStyleLayer’s `iconImageName`, `iconScale`, `textFontSize`, `textOffset`, and `textRotation` properties can now be set to a source or composite function. ([#8544](https://github.com/mapbox/mapbox-gl-native/pull/8544), [#8590](https://github.com/mapbox/mapbox-gl-native/pull/8590), [#8592](https://github.com/mapbox/mapbox-gl-native/pull/8592), [#8593](https://github.com/mapbox/mapbox-gl-native/pull/8593)) +* Fixed an issue where setting the `MLNVectorStyleLayer.predicate` property failed to take effect if the relevant source was not in use by a visible layer at the time. ([#8653](https://github.com/mapbox/mapbox-gl-native/pull/8653)) +* Fixed an issue preventing programmatically added style layers from appearing in already cached tiles. ([#8954](https://github.com/mapbox/mapbox-gl-native/pull/8954)) +* Fixed an issue causing a composite function’s highest zoom level stop to be misinterpreted. ([#8613](https://github.com/mapbox/mapbox-gl-native/pull/8613), [#8790](https://github.com/mapbox/mapbox-gl-native/pull/8790)) +* Fixed an issue where re-adding a layer that had been previously removed from a style would reset its paint properties. Moved initializers for `MLNTileSource`, `MLNStyleLayer`, and `MLNForegroundStyleLayer` to their concrete subclasses; because these classes were already intended for initialization only via concrete subclasses, this should have no developer impact. ([#8626](https://github.com/mapbox/mapbox-gl-native/pull/8626)) +* Fixed a crash that occurred when removing a source that was still being used by one or more style layers. Since this is a programming error, a warning is logged to the console instead. ([#9129](https://github.com/mapbox/mapbox-gl-native/pull/9129)) +* Feature querying results now account for any changes to a feature’s size caused by a source or composite style function. ([#8665](https://github.com/mapbox/mapbox-gl-native/pull/8665)) +* Fixed the behavior of composite functions that specify fractional zoom level stops. ([#9289](https://github.com/mapbox/mapbox-gl-native/pull/9289)) +* Letter spacing is now disabled in Arabic text so that ligatures are drawn correctly. ([#9062](https://github.com/mapbox/mapbox-gl-native/pull/9062)) +* Improved the performance of styles using source and composite style functions. ([#9185](https://github.com/mapbox/mapbox-gl-native/pull/9185), [#9257](https://github.com/mapbox/mapbox-gl-native/pull/9257)) + +### Annotations + +* The default marker image has been made slightly larger and now matches the version in the Mapbox iOS SDK. ([#9370](https://github.com/mapbox/mapbox-gl-native/pull/9370)) +* The `MLNPolyline.coordinate` and `MLNPolygon.coordinate` properties now return the midpoint and centroid, respectively, instead of the first coordinate. ([#8713](https://github.com/mapbox/mapbox-gl-native/pull/8713)) + +### User interaction + +* Fixed an issue causing the map to go blank during a flight animation that travels a very short distance. ([#9199](https://github.com/mapbox/mapbox-gl-native/pull/9199)) +* Fixed an issue causing the mouse cursor to jump after Shift- or Option-dragging the map. ([#9390](https://github.com/mapbox/mapbox-gl-native/pull/9390)) +* The Improve This Map button in the attribution action sheet now leads to a feedback tool that matches MLNMapView’s rotation and pitch. `-[MLNAttributionInfo feedbackURLAtCenterCoordinate:zoomLevel:]` no longer respects the feedback URL specified in TileJSON. ([#9078](https://github.com/mapbox/mapbox-gl-native/pull/9078)) + +### Other changes + +* Fixed a crash when calling `MLNMultiPolygon.coordinate` [#8713](https://github.com/mapbox/mapbox-gl-native/pull/8713) +* Fixed an issue causing attribution button text to appear blue instead of black. ([#8701](https://github.com/mapbox/mapbox-gl-native/pull/8701)) +* Fixed a crash or console spew when MLNMapView is initialized with a frame smaller than 64 points wide by 64 points tall. ([#8562](https://github.com/mapbox/mapbox-gl-native/pull/8562)) +* The error passed into `-[MLNMapViewDelegate mapViewDidFailLoadingMap:withError:]` now includes a more specific description and failure reason. ([#8418](https://github.com/mapbox/mapbox-gl-native/pull/8418)) +* Improved CPU and battery performance while animating a tilted map’s camera in an area with many labels. ([#9031](https://github.com/mapbox/mapbox-gl-native/pull/9031)) +* Fixed an issue rendering polylines that contain duplicate vertices. ([#8808](https://github.com/mapbox/mapbox-gl-native/pull/8808)) +* Added struct boxing to `MLNCoordinateSpan`, `MLNCoordinateBounds`, `MLNOfflinePackProgress`, and `MLNTransition`. ([#9343](https://github.com/mapbox/mapbox-gl-native/pull/9343)) + +## 0.4.1 - April 8, 2017 + +This version of the Mapbox macOS SDK corresponds to version 3.5.2 of the Mapbox iOS SDK. + +* Fixed an issue causing code signing failures and bloating the framework. ([#8640](https://github.com/mapbox/mapbox-gl-native/pull/8640)) +* Fixed an issue that could cause a crash if annotations unknown to the map view were interacted with. ([#8686](https://github.com/mapbox/mapbox-gl-native/pull/8686)) +* Renamed the “Data-Driven Styling” guide to “Using Style Functions at Runtime” and clarified the meaning of data-driven styling in the guide’s discussion of runtime style functions. ([#8627](https://github.com/mapbox/mapbox-gl-native/pull/8627)) + +## 0.4.0 - April 2, 2017 + +This version of the Mapbox macOS SDK corresponds to version 3.5.1 of the Mapbox iOS SDK. + +### Internationalization + +* Added support for right-to-left text and Arabic ligatures in labels. ([#6984](https://github.com/mapbox/mapbox-gl-native/pull/6984), [#7123](https://github.com/mapbox/mapbox-gl-native/pull/7123)) +* Improved the line wrapping behavior of point-placed labels, especially labels written in Chinese and Japanese. ([#6828](https://github.com/mapbox/mapbox-gl-native/pull/6828), [#7446](https://github.com/mapbox/mapbox-gl-native/pull/7446)) +* CJK characters now remain upright in vertically oriented labels that have line placement, such as road labels. ([#7114](https://github.com/mapbox/mapbox-gl-native/issues/7114)) +* Added Catalan, Chinese (Simplified and Traditional), Dutch, Finnish, French, German, Japanese, Lithuanian, Polish, Portuguese (Brazilian), Spanish, Swedish, Ukrainian, and Vietnamese localizations. ([#7316](https://github.com/mapbox/mapbox-gl-native/pull/7316), [#7503](https://github.com/mapbox/mapbox-gl-native/pull/7503), [#7899](https://github.com/mapbox/mapbox-gl-native/pull/7899), [#7999](https://github.com/mapbox/mapbox-gl-native/pull/7999), [#8113](https://github.com/mapbox/mapbox-gl-native/pull/8113), [#8256](https://github.com/mapbox/mapbox-gl-native/pull/8256)) + +### Styles + +* Added support for data-driven styling in the form of source and composite style functions. `MLNStyleFunction` is now an abstract class, with `MLNCameraStyleFunction` providing the behavior of `MLNStyleFunction` in previous releases. New `MLNStyleFunction` subclasses allow you to vary a style attribute by the values of attributes of features in the source. ([#7596](https://github.com/mapbox/mapbox-gl-native/pull/7596)) +* Added methods to MLNShapeSource and MLNVectorSource for querying features loaded by the source, whether or not they’re visible on the map. ([#8263](https://github.com/mapbox/mapbox-gl-native/pull/8263)) +* Added `circleStrokeColor`, `circleStrokeWidth`, and `circleStrokeOpacity` properties to MLNCircleStyleLayer and support for corresponding properties in style JSON files. ([#7356](https://github.com/mapbox/mapbox-gl-native/pull/7356)) +* Point-placed labels in symbol style layers are now placed at more optimal locations within polygons. ([#7465](https://github.com/mapbox/mapbox-gl-native/pull/7465)) +* Fixed flickering that occurred when manipulating a style layer. ([#7616](https://github.com/mapbox/mapbox-gl-native/pull/7616)) +* Symbol style layers can now render point collections (known as multipoints in GeoJSON). ([#7445](https://github.com/mapbox/mapbox-gl-native/pull/7445)) +* Added a `transition` property to MLNStyle to customize the timing of changes to style layers. ([#7711](https://github.com/mapbox/mapbox-gl-native/pull/7711)) +* Added properties to MLNStyleLayer subclasses to customize the timing of transitions between values of individual attributes. ([#8225](https://github.com/mapbox/mapbox-gl-native/pull/8225)) +* Fixed an issue causing lines and text labels toward the top of the map view to appear blurry when the map is tilted. ([#7444](https://github.com/mapbox/mapbox-gl-native/pull/7444)) +* Fixed incorrect interpolation of style functions in Boolean-typed style attributes. ([#7526](https://github.com/mapbox/mapbox-gl-native/pull/7526)) +* Removed support for the `ref` property in layers in style JSON files. ([#7586](https://github.com/mapbox/mapbox-gl-native/pull/7586)) +* Fixed an issue that collapsed consecutive newlines within text labels. ([#7446](https://github.com/mapbox/mapbox-gl-native/pull/7446)) +* Fixed artifacts when drawing particularly acute line joins. ([#7786](https://github.com/mapbox/mapbox-gl-native/pull/7786)) +* Fixed an issue in which a vector style layer predicate involving the `$id` key path would exclude all features from the layer. ([#7989](https://github.com/mapbox/mapbox-gl-native/pull/7989), [#7971](https://github.com/mapbox/mapbox-gl-native/pull/7971)) +* Fixed an issue causing vector style layer predicates to be evaluated as if each feature had a `$type` attribute of 1, 2, or 3. The `$type` key path can now be compared to `Point`, `LineString`, or `Polygon`, as described in the documentation. ([#7971](https://github.com/mapbox/mapbox-gl-native/pull/7971)) +* When setting an `MLNShapeSource`’s shape to an `MLNFeature` instance, any `NSColor` attribute value is now converted to the equivalent CSS string representation for use with `MLNInterpolationModeIdentity` in style functions. ([#8025](https://github.com/mapbox/mapbox-gl-native/pull/8025)) +* An exception is no longer thrown if layers or sources are removed from a style before they are added. ([#7962](https://github.com/mapbox/mapbox-gl-native/pull/7962)) +* Renamed MLNStyleConstantValue to MLNConstantStyleValue. For compatibility with previous releases, MLNStyleConstantValue is now an alias of MLNConstantStyleValue. ([#8090](https://github.com/mapbox/mapbox-gl-native/pull/8090)) +* Fixed a crash that could occur when switching styles after adding an MLNSource to the style. ([#8298](https://github.com/mapbox/mapbox-gl-native/pull/8298)) + +### Annotations and user interaction + +* Added a method to MLNMapViewDelegate, `-mapView:shouldChangeFromCamera:toCamera:`, that you can implement to restrict which parts the user can navigate to using gestures. ([#5584](https://github.com/mapbox/mapbox-gl-native/pull/5584)) +* When a map view is the first responder, pressing +, -, or = now zooms the map. ([#8033](https://github.com/mapbox/mapbox-gl-native/pull/8033)) +* Changing the coordinates of a point annotation no longer deselects the annotation. ([#8269](https://github.com/mapbox/mapbox-gl-native/pull/8269)) +* Fixed an issue that could cause a crash when point annotations were added and removed while simultaneously querying source features. ([#8374](https://github.com/mapbox/mapbox-gl-native/pull/8374)) +* Fixed an issue preventing MLNMapView from adding a polyline annotation with the same coordinates as a polygon annotation. ([#8355](https://github.com/mapbox/mapbox-gl-native/pull/8355)) +* Zooming by double-tap, two-finger tap, zoom buttons, shortcut keys, or demo app menu items or shortcut keys now zooms to the nearest integer zoom level. ([#8027](https://github.com/mapbox/mapbox-gl-native/pull/8027)) +* Fixed an issue where translucent point annotations along tile boundaries would be drawn darker than expected. ([#6832](https://github.com/mapbox/mapbox-gl-native/pull/6832)) + +### Networking and offline maps + +* Offline pack notifications are now posted by `MLNOfflinePack` instances instead of the shared `MLNOfflineStorage` object. For backwards compatibility, the `userInfo` dictionary still indicates the pack’s state and progress. ([#7952](https://github.com/mapbox/mapbox-gl-native/pull/7952)) +* Fixed a memory leak in MLNMapView. ([#7956](https://github.com/mapbox/mapbox-gl-native/pull/7956)) +* Fixed an issue that could prevent a cached style from appearing while the computer is offline. ([#7770](https://github.com/mapbox/mapbox-gl-native/pull/7770)) +* Fixed an issue that could prevent a style from loading when reestablishing a network connection. ([#7902](https://github.com/mapbox/mapbox-gl-native/pull/7902)) +* `MLNOfflineStorage` instances now support a delegate conforming to `MLNOfflineStorageDelegate`, which allows altering URLs before they are requested from the Internet. ([#8084](https://github.com/mapbox/mapbox-gl-native/pull/8084)) + +### Other changes + +* Added support for the Carthage dependency manager. See [this SDK’s homepage](https://mapbox.github.io/mapbox-gl-native/macos/) for setup instructions. ([#8257](https://github.com/mapbox/mapbox-gl-native/pull/8257)) +* Fixed an issue that, among other things, caused various islands to disappear at certain zoom levels. ([#7621](https://github.com/mapbox/mapbox-gl-native/pull/7621)) +* Added a method to MLNMapView that allows you to specify a predicate when querying for visible features. ([#8256](https://github.com/mapbox/mapbox-gl-native/pull/8246)) +* Fixed flickering that occurred when panning past the antimeridian. ([#7574](https://github.com/mapbox/mapbox-gl-native/pull/7574)) +* Added a `MLNDistanceFormatter` class for formatting geographic distances. ([#7888](https://github.com/mapbox/mapbox-gl-native/pull/7888)) + +## 0.3.1 - February 21, 2017 + +This version of the Mapbox macOS SDK corresponds to version 3.4.2 of the Mapbox iOS SDK. + +* Fixed an issue causing MLNMapView’s `camera`’s `heading` to be set to a negative value, indicating an undefined heading, when the map view faces northwest. The heading is now wrapped to between zero and 360 degrees, for consistency with MLNMapView’s `direction` property. ([#7724](https://github.com/mapbox/mapbox-gl-native/pull/7724)) +* Fixed a crash that occurred when moving a window containing an MLNMapView from one screen to another. ([#8004](https://github.com/mapbox/mapbox-gl-native/pull/8004)) +* Fixed an issue preventing the use of the integrated GPU on machines that have more than one GPU. Follow the instructions in [Technical Q&A 1734](https://developer.apple.com/library/content/qa/qa1734/_index.html) to enable integrated GPU usage in your application. ([#7834](https://github.com/mapbox/mapbox-gl-native/pull/7834)) +* Fixed an issue causing the mouse cursor to jump after shift- or option-dragging a map view if the window opened on a screen with a different size than the screen with keyboard focus. ([#7846](https://github.com/mapbox/mapbox-gl-native/pull/7846)) +* Deprecated the style class methods in MLNStyle. ([#7785](https://github.com/mapbox/mapbox-gl-native/pull/7785)) +* Improved the performance of trivial camera animations. ([#7125](https://github.com/mapbox/mapbox-gl-native/pull/7125)) + +## 0.3.0 - January 21, 2016 + +This version of the Mapbox macOS SDK corresponds to version 3.4.0 of the Mapbox iOS SDK. The two SDKs have very similar feature sets. The main differences are the lack of user location tracking and annotation views. Some APIs have been adapted to macOS conventions, particularly the use of NSPopover for callout views. + +### Packaging + +* Fixed an issue causing code signing failures and bloating the framework. ([#5850](https://github.com/mapbox/mapbox-gl-native/pull/5850)) +* Xcode 7.3 or higher is now required for using this SDK. ([#6059](https://github.com/mapbox/mapbox-gl-native/issues/6059)) +* Fixed an issue with symbols not being properly stripped from the dynamic framework when built with `make xpackage SYMBOLS=NO`. ([#6531](https://github.com/mapbox/mapbox-gl-native/pull/6531)) +* The API reference has a sharper look. ([#7422](https://github.com/mapbox/mapbox-gl-native/pull/7422)) +* Added documentation for the Info.plist keys used by this SDK. ([#6833](https://github.com/mapbox/mapbox-gl-native/pull/6833)) + +### Styles and data + +* A new runtime styling API allows you to adjust the style and content of the base map dynamically. All the options available in [Mapbox Studio](https://www.mapbox.com/studio/) are now exposed via MLNStyle and subclasses of MLNStyleLayer and MLNSource. ([#5727](https://github.com/mapbox/mapbox-gl-native/pull/5727)) +* MLNMapView’s `styleURL` property can now be set to an absolute file URL. ([#6026](https://github.com/mapbox/mapbox-gl-native/pull/6026)) +* When creating an MLNShapeSource, you can now specify options for clustering point features within the shape source. Similarly, GeoJSON sources specified by the stylesheet at design time can specify the `cluster`, `clusterMaxZoom`, and `clusterRadius` attributes. ([#5724](https://github.com/mapbox/mapbox-gl-native/pull/5724)) +* When creating an MLNTileSource, you can now specify that the tile URLs use [TMS](https://en.wikipedia.org/wiki/Tile_Map_Service) coordinates by setting `MLNTileSourceOptionTileCoordinateSystem` to `MLNTileCoordinateSystemTMS`. TileJSON files can specify `"scheme": "tms"`. ([#2270](https://github.com/mapbox/mapbox-gl-native/pull/2270)) +* Fixed an issue causing abstract `MLNMultiPointFeature` objects to be returned in feature query results. Now concrete `MLNPointCollectionFeature` objects are returned. MLNMultiPointFeature is now an alias of MLNPointCollectionFeature. ([#6742](https://github.com/mapbox/mapbox-gl-native/pull/6742)) +* Fixed rendering artifacts and missing glyphs that occurred after viewing a large number of CJK characters on the map. ([#5908](https://github.com/mapbox/mapbox-gl-native/pull/5908)) +* Fixed an issue where the style zoom levels were not respected when deciding when to render a layer. ([#5811](https://github.com/mapbox/mapbox-gl-native/issues/5811)) +* Fixed an issue where feature querying sometimes failed to return the expected features when the map was tilted. ([#6773](https://github.com/mapbox/mapbox-gl-native/pull/6773)) +* MLNFeature’s `attributes` and `identifier` properties are now writable. ([#6728](https://github.com/mapbox/mapbox-gl-native/pull/6728)) +* Attribution views now display the correct attribution for the current style. ([#5999](https://github.com/mapbox/mapbox-gl-native/pull/5999)) +* If MLNMapView is unable to obtain or parse a style, it now calls its delegate’s `-mapViewDidFailLoadingMap:withError:` method. ([#6145](https://github.com/mapbox/mapbox-gl-native/pull/6145)) +* Added the `-[MLNMapViewDelegate mapView:didFinishLoadingStyle:]` delegate method, which offers the earliest opportunity to modify the layout or appearance of the current style before the map view is displayed to the user. ([#6636](https://github.com/mapbox/mapbox-gl-native/pull/6636)) +* Fixed an issue causing stepwise zoom functions to be misinterpreted. ([#6328](https://github.com/mapbox/mapbox-gl-native/pull/6328)) +* A source’s tiles are no longer rendered when the map is outside the source’s supported zoom levels. ([#6345](https://github.com/mapbox/mapbox-gl-native/pull/6345)) +* Fixed crashes that could occur when loading a malformed stylesheet. ([#5736](https://github.com/mapbox/mapbox-gl-native/pull/5736)) +* Improved style parsing performance. ([#6170](https://github.com/mapbox/mapbox-gl-native/pull/6170)) +* Improved feature querying performance. ([#6514](https://github.com/mapbox/mapbox-gl-native/pull/6514)) +* Fixed an issue where shapes that cannot currently be visually represented as annotations were still shown on the map as point annotations. ([#6764](https://github.com/mapbox/mapbox-gl-native/issues/6764)) + +### Annotations + +* Added `showAnnotations:animated:` and `showAnnotations:edgePadding:animated:`, which moves the map viewport to show the specified annotations. ([#5749](https://github.com/mapbox/mapbox-gl-native/pull/5749)) +* Added new methods to MLNMultiPoint for changing the vertices along a polyline annotation or the exterior of a polygon annotation. ([#6565](https://github.com/mapbox/mapbox-gl-native/pull/6565)) +* Fixed an exception raised when adding a custom annotation model object to MLNMapView. ([#7746](https://github.com/mapbox/mapbox-gl-native/pull/7746)) +* Added new APIs to MLNMapView to query for visible annotations. ([#6061](https://github.com/mapbox/mapbox-gl-native/pull/6061)) +* Shape, feature, and annotation classes now conform to NSSecureCoding. ([#6559](https://github.com/mapbox/mapbox-gl-native/pull/6559)) +* Various method arguments that are represented as C arrays of `CLLocationCoordinate2D` instances have been marked `const` to streamline bridging to Swift. ([#7215](https://github.com/mapbox/mapbox-gl-native/pull/7215)) +* To make an MLNPolyline or MLNPolygon span the antimeridian, specify coordinates with longitudes greater than 180° or less than −180°. ([#6088](https://github.com/mapbox/mapbox-gl-native/pull/6088)) +* Fixed an issue where placing a point annotation on Null Island also placed a duplicate annotation on its antipode. ([#3563](https://github.com/mapbox/mapbox-gl-native/pull/3563)) +* Fixed an issue that caused an assertion failure if a `MLNShapeCollection` (a GeoJSON GeometryCollection) was created with an empty array of shapes. ([#7632](https://github.com/mapbox/mapbox-gl-native/pull/7632)) +* Improved the precision of annotations at zoom levels greater than 18. ([#5517](https://github.com/mapbox/mapbox-gl-native/pull/5517)) + +### Networking and offline maps + +* Fixed an issue preventing an MLNMapView from loading tiles while an offline pack is downloading. ([#6446](https://github.com/mapbox/mapbox-gl-native/pull/6446)) +* Fixed an issue causing an MLNOfflinePack’s progress to continue to update after calling `-suspend`. ([#6186](https://github.com/mapbox/mapbox-gl-native/pull/6186)) +* Fixed an issue preventing cached annotation images from displaying while the device is offline. ([#6358](https://github.com/mapbox/mapbox-gl-native/pull/6358)) +* Fixed a crash that could occur when the device is disconnected while downloading an offline pack. ([#6293](https://github.com/mapbox/mapbox-gl-native/pull/6293)) +* Fixed a crash that occurred when encountering a rate-limit error in response to a network request. ([#6223](https://github.com/mapbox/mapbox-gl-native/pull/6223)) +* Added support for an `MLNMapboxAPIBaseURL` key in an app's `Info.plist` in order to customize the base URL used for retrieving map data, styles, and other resources. ([#6709](https://github.com/mapbox/mapbox-gl-native/pull/6709)) +* Query parameters are no longer stripped from mapbox: URLs used as resource URLs. ([#6182](https://github.com/mapbox/mapbox-gl-native/pull/6182), [#6432](https://github.com/mapbox/mapbox-gl-native/pull/6432)) +* Database errors are now logged to the console. ([#6291](https://github.com/mapbox/mapbox-gl-native/pull/6291)) + +### Other changes + +* Raster tiles such as those from Mapbox Satellite are now cached, eliminating flashing while panning back and forth. ([#7091](https://github.com/mapbox/mapbox-gl-native/pull/7091)) +* Fixed an issue where the map view’s center would always be calculated as if the view occupied the entire window. ([#6102](https://github.com/mapbox/mapbox-gl-native/pull/6102)) +* Notification names and user info keys are now string enumeration values for ease of use in Swift. ([#6794](https://github.com/mapbox/mapbox-gl-native/pull/6794)) +* Fixed a typo in the documentation for the MLNCompassDirectionFormatter class. ([#5879](https://github.com/mapbox/mapbox-gl-native/pull/5879)) +* The NSClickGestureRecognizer on MLNMapView that is used for selecting annotations now fails if a click does not select an annotation. ([#7246](https://github.com/mapbox/mapbox-gl-native/pull/7246)) + +## 0.2.1 - July 19, 2016 + +* Fixed a crash that occurred when a sprite URL lacks a file extension. See [this comment](https://github.com/mapbox/mapbox-gl-native/issues/5722#issuecomment-233701251) to determine who may be affected by this bug. ([#5723](https://github.com/mapbox/mapbox-gl-native/pull/5723)) +* Right-clicking to open MLNMapView’s context menu no longer prevents the user from subsequently panning the map by clicking and dragging. ([#5593](https://github.com/mapbox/mapbox-gl-native/pull/5593)) +* Fixed an issue causing overlapping polylines and polygons to be drawn in undefined z-order. Shapes are always drawn in the order they are added to the map, from the oldest on the bottom to the newest on the top. ([#5710](https://github.com/mapbox/mapbox-gl-native/pull/5710)) +* Improved the design of the generated API documentation. ([#5306](https://github.com/mapbox/mapbox-gl-native/pull/5306)) +* As the user zooms in, tiles from lower zoom levels are scaled up until tiles for higher zoom levels are loaded. ([#5143](https://github.com/mapbox/mapbox-gl-native/pull/5143)) +* Per documentation, the first and last coordinates in an MLNPolygon must be identical in order for the polygon to draw correctly. The same is true for an MLNPolygon’s interior polygon. ([#5514](https://github.com/mapbox/mapbox-gl-native/pull/5514)) +* Added [quadkey](https://msdn.microsoft.com/en-us/library/bb259689.aspx) support and limited WMS support in raster tile URL templates. ([#5628](https://github.com/mapbox/mapbox-gl-native/pull/5628)) +* Fixed a crash that occurred when a style or other resource URL has a query string. ([#5554](https://github.com/mapbox/mapbox-gl-native/pull/5554)) +* Fixed an issue causing polyline and polygon annotations to disappear when the zoom level is one less than the maximum zoom level. ([#5418](https://github.com/mapbox/mapbox-gl-native/pull/5418)) +* Added a property to MLNOfflineStorage, `countOfBytesCompleted`, that indicates the disk space occupied by all cached and offline resources. ([#5585](https://github.com/mapbox/mapbox-gl-native/pull/5585)) +* The `text-pitch-alignment` property is now supported in stylesheets for improved street label legibility on a tilted map. ([#5288](https://github.com/mapbox/mapbox-gl-native/pull/5288)) +* The `icon-text-fit` and `icon-text-fit-padding` properties are now supported in stylesheets, allowing the background of a shield to automatically resize to fit the shield’s text. ([#5334](https://github.com/mapbox/mapbox-gl-native/pull/5334)) +* The `circle-pitch-scale` property is now supported in stylesheets, allowing circle features in a tilted base map to scale or remain the same size as the viewing distance changes. ([#5576](https://github.com/mapbox/mapbox-gl-native/pull/5576)) +* The `identifier` property of an MLNFeature may now be either a number or string. ([#5514](https://github.com/mapbox/mapbox-gl-native/pull/5514)) +* Improved the performance of relocating a point annotation by changing its `coordinate` property. ([#5385](https://github.com/mapbox/mapbox-gl-native/pull/5385)) +* Replaced the wireframe debug mask with an overdraw visualization debug mask to match Mapbox GL JS’s overdraw inspector. ([#5403](https://github.com/mapbox/mapbox-gl-native/pull/5403)) +* MLNMapDebugOverdrawVisualizationMask and MLNMapDebugStencilBufferMask no longer have any effect in Release builds of the SDK. These debug masks have been disabled for performance reasons. ([#5555](https://github.com/mapbox/mapbox-gl-native/pull/5555)) + +## 0.2.0 - June 14, 2016 + +* This version of the Mapbox macOS SDK roughly corresponds to version 3.3.0-beta.1 of the Mapbox iOS SDK. The two SDKs have very similar feature sets. The main differences are the lack of user location tracking and annotation views. Some APIs have been adapted to macOS conventions, particularly the use of NSPopover for callout views. +* Renamed the SDK to the Mapbox macOS SDK. +* Fixed an issue in which Mapbox.framework was nested inside another folder named Mapbox.framework. ([#4998](https://github.com/mapbox/mapbox-gl-native/pull/4998)) +* Added methods to MLNMapView for obtaining the underlying map data rendered by the current style, along with additional classes to represent complex geometry in that data. ([#5110](https://github.com/mapbox/mapbox-gl-native/pull/5110)) +* An MLNPolygon can now have interior polygons, representing holes knocked out of the overall shape. ([#5110](https://github.com/mapbox/mapbox-gl-native/pull/5110)) +* Fixed a vector tile parsing bug that sometimes caused properties in the vector tile source to be mismatched. ([#5183](https://github.com/mapbox/mapbox-gl-native/pull/5183)) +* Fixed a crash passing a mixture of point and shape annotations into `-[MLNMapView addAnnotations:]`. ([#5097](https://github.com/mapbox/mapbox-gl-native/pull/5097)) +* Fixed an issue (speculatively) where the tile cache could be included in iCloud backups. ([#5124](https://github.com/mapbox/mapbox-gl-native/pull/5124)) +* Improved performance viewing regions with large landcover polygons when viewing a style that uses the Mapbox Streets source. ([#2444](https://github.com/mapbox/mapbox-gl-native/pull/2444)) +* Fixed a memory leak when using raster resources. ([#5141](https://github.com/mapbox/mapbox-gl-native/pull/5141)) +* Added `MLNCoordinateInCoordinateBounds()`, a function that tests whether or not a coordinate is in a given bounds. ([#5053](https://github.com/mapbox/mapbox-gl-native/pull/5053)) +* Fixed an issue in which fade transitions (such as on street labels in some styles) lagged behind the map when quickly zooming in and out. ([#4579](https://github.com/mapbox/mapbox-gl-native/pull/4579)) +* Added new options to `MLNMapDebugMaskOptions` that show wireframes and the stencil buffer instead of the color buffer. ([#4359](https://github.com/mapbox/mapbox-gl-native/pull/4359)) +* Declarations in the API documentation are shown in both Objective-C and Swift. ([realm/jazzy#530](https://github.com/realm/jazzy/pull/530)) + +## 0.1.0 - May 10, 2016 + +* This version of the Mapbox OS X SDK roughly corresponds to version 3.3.0-alpha.2 of the Mapbox iOS SDK. The two SDKs have very similar feature sets. The main difference is the lack of user location tracking. Some APIs have been adapted to OS X conventions, particularly the use of NSPopover for callout views. diff --git a/platform/macos/DEVELOPING.md b/platform/macos/DEVELOPING.md index 91738834d..64858e440 100644 --- a/platform/macos/DEVELOPING.md +++ b/platform/macos/DEVELOPING.md @@ -1,3 +1,140 @@ # Contributing to the Mapbox Maps SDK for macOS -The [Mapbox Maps SDK for macOS](https://mapbox.github.io/mapbox-gl-native/macos/) moved out of this repository [in late 2019](https://github.com/mapbox/mapbox-gl-native/issues/15971). To build the SDK from source or contribute to the SDK, see the instructions now located [in the mapbox-gl-native-ios repository](https://github.com/mapbox/mapbox-gl-native-ios/tree/master/platform/macos/DEVELOP.md). +This document explains how to build the Mapbox Maps SDK for macOS from source. It is intended for advanced developers who wish to contribute to Mapbox GL and the Mapbox Maps SDK for iOS. + +## Requirements + +See the "Requirements" section in [INSTALL.md](INSTALL.md). + +## Building the SDK + +Build and package the SDK by using one of the following commands: + +* `make xproj` opens the macOS project in Xcode +* `make xpackage` builds a dynamic framework in the Debug configuration, including debug symbols. +* `make xdocument` generates API documentation using jazzy. + +You can customize the build output by passing the following arguments into the `make` invocation: + +* `BUILDTYPE=Release` will optimize for distribution. Defaults to `Debug`. +* `SYMBOLS=NO` strips the build output of any debug symbols, yielding much smaller binaries. Defaults to `YES`. + +An example command that creates a dynamic framework suitable for distribution: + +```bash +make xpackage BUILDTYPE=Release SYMBOLS=NO +``` + +The products of these build commands can be found in the `build/macos/pkg` folder at the base of the repository. + +## Contributing + +### Making any symbol public + +To add any Objective-C type, constant, or member to the macOS maps SDK’s public interface: + +1. Ensure that the symbol is pure Objective-C and does not rely on any language features specific to Objective-C++ or the C11 dialect of C – so no namespaced types or classes named with emoji! 🙃 Most projects that depend on this SDK are either written in pure Objective-C (GNU99 dialect) or Swift, which cannot yet bridge C++ types. +1. Name the symbol according to [Cocoa naming conventions](https://developer.apple.com/library/prerelease/content/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html#//apple_ref/doc/uid/10000146i). Use the `MLN` class prefix to avoid conflicts with client code. If the symbol has an analogue in MapKit, name the symbol according to MapKit. +1. Provide full documentation comments. We use [jazzy](https://github.com/realm/jazzy/) to produce the documentation found in the SDK distribution. We also recognize that many developers rely on Xcode’s Quick Help feature. jazzy supports Markdown formatting; however, Quick Help supports only [HeaderDoc](https://developer.apple.com/legacy/library/documentation/DeveloperTools/Conceptual/HeaderDoc/intro/intro.html) syntax and a subset of Doxygen syntax. For hyperlinks, use HTML syntax, which is recognized by both tools. + +### Making a type or constant public + +To add an Objective-C class, protocol, category, typedef, enumeration, or global constant to the macOS maps SDK’s public interface: + +1. _(Optional.)_ Add the macro `MLN_EXPORT` prior to the declaration for classes and global constants. To use this macro, include `MLNFoundation.h`. You can check whether all public symbols are exported correctly by running `make darwin-check-public-symbols`. +1. _(Optional.)_ Add the type or constant’s name to the relevant category in the `custom_categories` section of [the jazzy configuration file](./jazzy.yml). This is required for classes and protocols and also recommended for any other type that is strongly associated with a particular class or protocol. If you leave out this step, the symbol will appear in an “Other” section in the generated HTML documentation’s table of contents. +1. _(Optional.)_ If the symbol would also be publicly exposed in the iOS maps SDK, consult [the companion iOS document](../ios/DEVELOPING.md#making-a-type-or-constant-public) for further instructions. + +### Adding a source code file + +To add an Objective-C header or implementation file to the macOS maps SDK: + +1. Add the file to the “dynamic” target’s Headers or Compile Sources build phase, as appropriate. You can either use the Build Phases tab of the project editor or the Target Membership section of the File inspector. +1. Audit new headers for nullability. Typically, you will wrap a header with `NS_ASSUME_NONNULL_BEGIN` and `NS_ASSUME_NONNULL_END`. +1. _(Optional.)_ If it’s a public header, change its visibility from Project to Public and import it in [the macOS SDK’s umbrella header](./src/Mapbox.h). +1. _(Optional.)_ If the file would also be used by the iOS maps SDK, make sure it’s in [platform/darwin/src/](../darwin/src/), then consult [the companion iOS document](../ios/DEVELOPING.md#adding-a-source-code-file) for further instructions. +1. Run `scripts/generate-file-lists.js` to update the generated source file list for third party build systems. + +### Adding a resource + +To add a resource (such as an image, SSL certificate, property list, or strings table) to the macOS maps SDK: + +1. Add the header to the Copy Bundle Resources build phase of the “dynamic” target. You can either use the Build Phases tab of the project editor or the Target Membership section of the File inspector. +1. _(Optional.)_ If the resource would also be used by the iOS maps SDK, make sure it’s in [platform/darwin/resources/](../darwin/resources/), then consult [the companion iOS document](../ios/DEVELOPING.md#adding-a-resource) for further instructions. + +### Adding user-facing text + +To add or update text that the user may see in the macOS maps SDK: + +1. Make sure the implementation file imports [NSBundle+MLNAdditions.h](../darwin/src/NSBundle+MLNAdditions.h). +1. Use the `NSLocalizedStringWithDefaultValue()` macro: + * `key` is a unique identifier that won’t change if the user-facing text ever needs to change. + * `tbl` is `Foundation` in code shared between the iOS and macOS maps SDKs, or `nil` otherwise. + * `bundle` is `nil`; the redefined macro looks for the SDK bundle at runtime and ignores this argument. + * `val` is the English string. +1. _(Optional.)_ When dealing with a number followed by a pluralized word, do not split the string. Instead, use a format string and make `val` ambiguous, like `%d file(s)`. Then pluralize for English in the appropriate [.stringsdict file](https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPInternational/StringsdictFileFormat/StringsdictFileFormat.html). See [platform/darwin/resources/en.lproj/Foundation.stringsdict](../darwin/resources/en.lproj/Foundation.stringsdict) for an example. Localizers should do likewise for their languages. +1. Run `make genstrings` and commit any changes it makes to .strings files. The make rule also updates the iOS maps SDK’s strings tables. + +### Adding a localization + +Translations of all the Mapbox GL Native SDKs are managed [in Transifex](https://www.transifex.com/mapbox/mapbox-gl-native/). If your language already has a translation, feel free to complete or proofread it. Otherwise, please [request your language](https://www.transifex.com/mapbox/mapbox-gl-native/languages/). Note that we’re primarily interested in languages that macOS supports as system languages. + +Once you’ve finished translating the SDK into a new language in Transifex, perform these steps to make Xcode aware of the translation: + +1. In macos.xcworkspace, open the project editor for macos.xcodeproj. Using the project editor’s sidebar or tab bar dropdown, go to the “macos” project; under the Localizations section of the Info tab, click the + button to add your language to the project. +1. In the sheet that appears, select all the .strings and .stringsdict files but no .xib file. (Most of the XIBs are part of the macosapp example application, which is not localized, while MLNAnnotationCallout.xib contains no localizable strings.) If your language lacks declension and pluralization, as in the case of Chinese, omit the .stringsdict files. +1. In the Project navigator, expand each .stringsdict file in the project. An additional version for your localization should be listed; translate it. See Apple’s documentation on the [.stringsdict format](https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPInternational/StringsdictFileFormat/StringsdictFileFormat.html). +1. In the Project navigator, select Demo App/Localizable.strings and then, in the File Inspector, check the box for your new localization. +1. Repeat the steps above in ios.xcworkspace. + +The .strings files should still be in the original English – that’s expected. Now you can pull your translations into this repository: + +1. _(First time only.)_ Download the [`tx` command line tool](https://docs.transifex.com/client/installing-the-client) and [configure your .transifexrc](https://docs.transifex.com/client/client-configuration). +1. Run `tx pull -a`. +1. Convert any added .strings files from UTF-16 encoding to UTF-8 encoding to facilitate diffing and merging. You can convert the file encoding using Xcode’s File inspector or the following command (substituting _MYLANG_ for the locale code): + +``` +find platform/{darwin,ios}/resources platform/macos/sdk -path '*/MYLANG.lproj/*.strings' -exec textutil -convert txt -extension strings -inputencoding UTF-16 -encoding UTF-8 {} -output {} \; +``` + +### Adding a code example + +To add an example code listing to the documentation for a class or class member: + +1. Add a test method named in the form `testMLNClass` or `testMLNClass$method` + to [MLNDocumentationExampleTests](test/MLNDocumentationExampleTests.swift). + Wrap the code you’d like to appear in the documentation within + `//#-example-code` and `//#-end-example-code` comments. +1. If the header doesn’t already have an example code listing, add the path to + the header to platform/darwin/scripts/update-examples.list. +1. Insert the code listings into the headers: + +```bash +make darwin-update-examples +``` + +[SourceKitten](https://github.com/jpsim/SourceKitten/) is required and will be installed automatically using Homebrew. + +### Customizing compilation settings + +You can provide an optional and custom [`xcconfig`](https://help.apple.com/xcode/mac/current/#/dev745c5c974) file named `platform/darwin/developer.xcconfig` to set custom build options. This file is ignored by git. These custom settings apply to all configurations (`Debug`, `Release`), but do **not** apply to the core `mbgl` files. This mechanism allows you to try different compiler settings (for example when testing an Xcode beta). + +## Testing + +`make macos-test` builds and runs unit tests of cross-platform code as well as the SDK. + +To instead run the cross-platform tests in Xcode instead of on the command line: + +1. Run `make xproj` to set up the workspace. +1. Change the scheme to “mbgl-test” and press Command-R to run core unit tests. +1. Change the scheme to “CI” and press Command-U to run SDK integration tests. + +## Access tokens + +The demo applications use Mapbox vector tiles, which require a Mapbox account and API access token. Obtain an access token on the [Mapbox account page](https://www.mapbox.com/studio/account/tokens/). You will be prompted for this access token the first time you launch the demo application. + +## Using macosapp + +Through the macOS maps SDK, the demo application supports a variety of standard gestures and keyboard shortcuts. For more details, open Mapbox GL Help from the Help menu. + +You can also [integrate the Mapbox Maps SDK for macOS into your own Cocoa application](INSTALL.md). diff --git a/platform/ios/platform/macos/ExportOptions.plist b/platform/macos/ExportOptions.plist similarity index 100% rename from platform/ios/platform/macos/ExportOptions.plist rename to platform/macos/ExportOptions.plist diff --git a/platform/macos/INSTALL.md b/platform/macos/INSTALL.md index 8236fcd42..c2e56bce4 100644 --- a/platform/macos/INSTALL.md +++ b/platform/macos/INSTALL.md @@ -1,3 +1,104 @@ # Integrating a custom build of the Mapbox Maps SDK for macOS into your application -The [Mapbox Maps SDK for macOS](https://mapbox.github.io/mapbox-gl-native/macos/) moved out of this repository [in late 2019](https://github.com/mapbox/mapbox-gl-native/issues/15971). To build a development version of the SDK for use in your own Cocoa application, see the instructions now located [in the mapbox-gl-native-ios repository](https://github.com/mapbox/mapbox-gl-native-ios/tree/master/platform/macos/INSTALL.md). To use a production-ready version of the SDK, see the [Mapbox Maps SDK for macOS homepage](https://mapbox.github.io/mapbox-gl-native/macos/). +This document explains how to build a development version of the Mapbox Maps SDK for macOS from source and integrate it into your own Cocoa application. This process is for advanced developers who want to get a glimpse of the SDK’s development between releases. To use a production-ready version of the SDK, see the [Mapbox Maps SDK for macOS homepage](https://mapbox.github.io/mapbox-gl-native/macos/). + +### Requirements + +The Mapbox Maps SDK for macOS requires the macOS 10.11.0 SDK (or above) and Xcode 9.0 (or above). To use this SDK with Xcode 7.3.1, download and use a symbols build from the [releases](https://github.com/mapbox/mapbox-gl-native-ios/releases) page. + +Before building, follow these steps to install prerequisites: + +1. Install [Xcode](https://developer.apple.com/xcode/) +1. Launch Xcode and install any updates +1. Install [Homebrew](http://brew.sh) +1. Install [Node.js](https://nodejs.org/), [CMake](https://cmake.org/), [ccache](https://ccache.samba.org), and [pkg-config](https://formulae.brew.sh/formula/pkg-config-wrapper#default), [glfw](https://formulae.brew.sh/formula/glfw): + + ```bash + brew list node || brew install node + brew list cmake || brew install cmake + brew list ccache || brew install ccache + brew list pkg-config || brew install pkg-config + brew list glfw || brew install glfw + + # To install the CMake documentation + brew list cmake-docs || brew install cmake-docs + ``` +1. Install [xcpretty](https://github.com/supermarin/xcpretty) (optional, used for prettifying command line builds): + ``` + [sudo] gem install xcpretty + ``` +1. Install [jazzy](https://github.com/realm/jazzy) for generating API documentation: + ``` + [sudo] gem install jazzy + ``` + +### Building the SDK from source + +To build the SDK from source: + +1. Clone the git repository: + ```bash + git clone https://github.com/maplibre/maplibre-native.git + cd maplibre-native + ``` + Note that this repository uses Git submodules. They'll be automatically checked out when you first run a `make` command, + but are not updated automatically. We recommended that you run `git submodule update` after pulling down new commits to + this repository. +1. Run: + ``` + make xpackage + ``` + This produces a `Mapbox.framework` in the `build/macos/pkg/` folder. + +### Installation + +1. Open the project editor, select your application target, then go to the General tab. Drag Mapbox.framework into the “Embedded Binaries” section. (Don’t drag it into the “Linked Frameworks and Libraries” section; Xcode will add it there automatically.) In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish. + +1. Some vector tiles servers require a API key. In the project editor, select the application target, then go to the Info tab. Under the “Custom macOS Application Target Properties”” section, set `MLNApiKey` to your api key. + +## Usage + +In a storyboard or XIB: + +1. Add a view to your view controller or window. (Drag Custom View from the Object library to the View Controller scene on the Interface Builder canvas. In a XIB, drag it instead to the window on the canvas.) +2. In the Identity inspector, set the view’s custom class to `MLNMapView`. +3. MLNMapView needs to be layer-backed: + * You can make the window layer-backed by selecting the window and checking Full Size Content View in the Attributes inspector. This allows the map view to underlap the title bar and toolbar. + * Alternatively, if you don’t want the entire window to be layer-backed, you can make just the map view layer-backed by selecting it and checking its entry under the View Effects inspector’s Core Animation Layer section. +4. Add a map feedback item to your Help menu. (Drag Menu Item from the Object library into Main Menu ‣ Help ‣ Menu.) Title it “Improve This Map” or similar, and connect it to the `giveFeedback:` action of First Responder. + +If you need to manipulate the map view programmatically: + +1. Switch to the Assistant Editor. +1. Import the `Mapbox` module. +1. Connect the map view to a new outlet in your view controller class. (Control-drag from the map view in Interface Builder to a valid location in your view controller implementation.) The resulting outlet declaration should look something like this: + +```objc +// ViewController.m +@import Mapbox; + +@interface ViewController : NSViewController + +@property (strong) IBOutlet MLNMapView *mapView; + +@end +``` + +```swift +// ViewController.swift +import Mapbox + +class ViewController: NSViewController { + @IBOutlet var mapView: MLNMapView! +} +``` + +```applescript +-- AppDelegate.applescript +script AppDelegate + property parent : class "NSObject" + property theMapView : missing value +end script +``` + +For further instructions, consult the [macOS SDK documentation](https://mapbox.github.io/mapbox-gl-native/macos/) or run `make xdocument` to generate the documentation. The [Mapbox Maps SDK for iOS](https://www.mapbox.com/ios-sdk/)’s [API documentation](https://www.mapbox.com/ios-sdk/) and [online examples](https://www.mapbox.com/ios-sdk/examples/) apply to the Mapbox Maps SDK for macOS with few differences, mostly around unimplemented features like user location tracking. diff --git a/platform/ios/platform/macos/Mapbox-macOS-SDK-symbols.podspec b/platform/macos/Mapbox-macOS-SDK-symbols.podspec similarity index 100% rename from platform/ios/platform/macos/Mapbox-macOS-SDK-symbols.podspec rename to platform/macos/Mapbox-macOS-SDK-symbols.podspec diff --git a/platform/ios/platform/macos/Mapbox-macOS-SDK.podspec b/platform/macos/Mapbox-macOS-SDK.podspec similarity index 100% rename from platform/ios/platform/macos/Mapbox-macOS-SDK.podspec rename to platform/macos/Mapbox-macOS-SDK.podspec diff --git a/platform/macos/README.md b/platform/macos/README.md index 3ccc4e54f..c9a38a461 100644 --- a/platform/macos/README.md +++ b/platform/macos/README.md @@ -1,3 +1,25 @@ -# macOS +# MapLibre Native for macOS -This folder contains build configuration files for the macOS distribution of MapLibre Native, which ultimately targets Cocoa applications written in Objective-C, Swift, Interface Builder, or AppleScript via the MapLibre Maps SDK for macOS. +> **Note** +> https://github.com/maplibre/maplibre-native/pull/995 introduced OpenGL ES 3.0 shaders which are not supported by macOS without workarounds. That means that while the [Metal backend implementation](https://github.com/maplibre/maplibre-native/blob/main/design-proposals/2022-11-29-metal-port.md) is underway, builds from the `main` branch will not work on macOS. Use the `opengl-2` branch in the meantime. + +[![GitHub Action build status](https://github.com/maplibre/maplibre-native/workflows/macos-ci/badge.svg)](https://github.com/maplibre/maplibre-native/actions/workflows/macos-ci.yml) [![GitHub Action build status](https://github.com/maplibre/maplibre-native/workflows/macos-release/badge.svg)](https://github.com/maplibre/maplibre-native/actions/workflows/macos-release.yml) + +Put interactive, scalable world maps into your native Cocoa application with MapLibre Native for macOS. + +* High-performance OpenGL rendering and multitouch gestures keep your users happy. +* A well-designed, fully documented API helps you stay productive. +* Develop across [multiple platforms](../../README.md), including [iOS](../ios/README.md), using the same styles and similar APIs. + +![](docs/img/screenshot.jpg) + +MapLibre Native for macOS is compatible with macOS 10.10.0 and above for Cocoa applications developed in Objective-C, Swift, Interface Builder, or AppleScript. For hybrid applications, consider [MapLibre GL JS]([https://github.com/mapbox/mapbox-gl-js/](https://github.com/maplibre/maplibre-gl-js)). + +## Contributing + +* [Build the MapLibre Native for macOS from source](INSTALL.md) +* [Contribute to MapLibre Native for macOS](CONTRIBUTING.md) +* [MapLibre Style Spec](https://maplibre.org/maplibre-style-spec/) +* [Mapbox Vector Tile Specification](https://www.mapbox.com/developers/vector-tiles/) + +The MapLibre Organization does not officially support the macOS to the same extent as iOS (see [project tiers](https://github.com/maplibre/maplibre/blob/main/PROJECT_TIERS.md)); however, bug reports and pull requests are certainly welcome. diff --git a/platform/ios/platform/macos/WorkspaceSettings.xcsettings b/platform/macos/WorkspaceSettings.xcsettings similarity index 100% rename from platform/ios/platform/macos/WorkspaceSettings.xcsettings rename to platform/macos/WorkspaceSettings.xcsettings diff --git a/platform/ios/platform/macos/app/AppDelegate.h b/platform/macos/app/AppDelegate.h similarity index 100% rename from platform/ios/platform/macos/app/AppDelegate.h rename to platform/macos/app/AppDelegate.h diff --git a/platform/ios/platform/macos/app/AppDelegate.m b/platform/macos/app/AppDelegate.m similarity index 100% rename from platform/ios/platform/macos/app/AppDelegate.m rename to platform/macos/app/AppDelegate.m diff --git a/platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128.png similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128.png rename to platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128.png diff --git a/platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128@2x.png similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128@2x.png rename to platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon128x128@2x.png diff --git a/platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16.png similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16.png rename to platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16.png diff --git a/platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16@2x.png similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16@2x.png rename to platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon16x16@2x.png diff --git a/platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256.png similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256.png rename to platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256.png diff --git a/platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256@2x.png similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256@2x.png rename to platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon256x256@2x.png diff --git a/platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32.png similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32.png rename to platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32.png diff --git a/platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32@2x.png similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32@2x.png rename to platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon32x32@2x.png diff --git a/platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512.png similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512.png rename to platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512.png diff --git a/platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512@2x.png b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512@2x.png similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512@2x.png rename to platform/macos/app/Assets.xcassets/AppIcon.appiconset/AppIcon512x512@2x.png diff --git a/platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/Contents.json b/platform/macos/app/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/AppIcon.appiconset/Contents.json rename to platform/macos/app/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Contents.json b/platform/macos/app/Assets.xcassets/Contents.json similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Contents.json rename to platform/macos/app/Assets.xcassets/Contents.json diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Layers/Contents.json b/platform/macos/app/Assets.xcassets/Layers/Contents.json similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Layers/Contents.json rename to platform/macos/app/Assets.xcassets/Layers/Contents.json diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json rename to platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf b/platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf rename to platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json rename to platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf b/platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf rename to platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/Contents.json similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/Contents.json rename to platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/Contents.json diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/fill-extrusion.pdf b/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/fill-extrusion.pdf similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/fill-extrusion.pdf rename to platform/macos/app/Assets.xcassets/Layers/fill-extrusion.imageset/fill-extrusion.pdf diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json rename to platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf b/platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf rename to platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/Contents.json similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/Contents.json rename to platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/Contents.json diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/heatmap.pdf b/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/heatmap.pdf similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/heatmap.pdf rename to platform/macos/app/Assets.xcassets/Layers/heatmap.imageset/heatmap.pdf diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/Contents.json similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/Contents.json rename to platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/Contents.json diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/hillshade.pdf b/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/hillshade.pdf similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/hillshade.pdf rename to platform/macos/app/Assets.xcassets/Layers/hillshade.imageset/hillshade.pdf diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json rename to platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf b/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf rename to platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Radar/Contents.json b/platform/macos/app/Assets.xcassets/Radar/Contents.json similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Radar/Contents.json rename to platform/macos/app/Assets.xcassets/Radar/Contents.json diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/Contents.json similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/Contents.json rename to platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/Contents.json diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/southeast_radar_0.png b/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/southeast_radar_0.png similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/southeast_radar_0.png rename to platform/macos/app/Assets.xcassets/Radar/southeast_0.imageset/southeast_radar_0.png diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/Contents.json similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/Contents.json rename to platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/Contents.json diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/southeast_radar_1.png b/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/southeast_radar_1.png similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/southeast_radar_1.png rename to platform/macos/app/Assets.xcassets/Radar/southeast_1.imageset/southeast_radar_1.png diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/Contents.json similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/Contents.json rename to platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/Contents.json diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/southeast_radar_2.png b/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/southeast_radar_2.png similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/southeast_radar_2.png rename to platform/macos/app/Assets.xcassets/Radar/southeast_2.imageset/southeast_radar_2.png diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/Contents.json similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/Contents.json rename to platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/Contents.json diff --git a/platform/ios/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/southeast_radar_3.png b/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/southeast_radar_3.png similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/southeast_radar_3.png rename to platform/macos/app/Assets.xcassets/Radar/southeast_3.imageset/southeast_radar_3.png diff --git a/platform/ios/platform/macos/app/Assets.xcassets/ohio.imageset/Contents.json b/platform/macos/app/Assets.xcassets/ohio.imageset/Contents.json similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/ohio.imageset/Contents.json rename to platform/macos/app/Assets.xcassets/ohio.imageset/Contents.json diff --git a/platform/ios/platform/macos/app/Assets.xcassets/ohio.imageset/ohio.pdf b/platform/macos/app/Assets.xcassets/ohio.imageset/ohio.pdf similarity index 100% rename from platform/ios/platform/macos/app/Assets.xcassets/ohio.imageset/ohio.pdf rename to platform/macos/app/Assets.xcassets/ohio.imageset/ohio.pdf diff --git a/platform/ios/platform/macos/app/ar.lproj/Localizable.strings b/platform/macos/app/Base.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/ar.lproj/Localizable.strings rename to platform/macos/app/Base.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/Base.lproj/MainMenu.xib b/platform/macos/app/Base.lproj/MainMenu.xib similarity index 100% rename from platform/ios/platform/macos/app/Base.lproj/MainMenu.xib rename to platform/macos/app/Base.lproj/MainMenu.xib diff --git a/platform/ios/platform/macos/app/Base.lproj/MapDocument.xib b/platform/macos/app/Base.lproj/MapDocument.xib similarity index 100% rename from platform/ios/platform/macos/app/Base.lproj/MapDocument.xib rename to platform/macos/app/Base.lproj/MapDocument.xib diff --git a/platform/ios/platform/macos/app/Credits.rtf b/platform/macos/app/Credits.rtf similarity index 100% rename from platform/ios/platform/macos/app/Credits.rtf rename to platform/macos/app/Credits.rtf diff --git a/platform/ios/platform/macos/app/DroppedPinAnnotation.h b/platform/macos/app/DroppedPinAnnotation.h similarity index 100% rename from platform/ios/platform/macos/app/DroppedPinAnnotation.h rename to platform/macos/app/DroppedPinAnnotation.h diff --git a/platform/ios/platform/macos/app/DroppedPinAnnotation.m b/platform/macos/app/DroppedPinAnnotation.m similarity index 100% rename from platform/ios/platform/macos/app/DroppedPinAnnotation.m rename to platform/macos/app/DroppedPinAnnotation.m diff --git a/platform/ios/platform/macos/app/Info.plist b/platform/macos/app/Info.plist similarity index 100% rename from platform/ios/platform/macos/app/Info.plist rename to platform/macos/app/Info.plist diff --git a/platform/ios/platform/macos/app/LocationCoordinate2DTransformer.h b/platform/macos/app/LocationCoordinate2DTransformer.h similarity index 100% rename from platform/ios/platform/macos/app/LocationCoordinate2DTransformer.h rename to platform/macos/app/LocationCoordinate2DTransformer.h diff --git a/platform/ios/platform/macos/app/LocationCoordinate2DTransformer.m b/platform/macos/app/LocationCoordinate2DTransformer.m similarity index 100% rename from platform/ios/platform/macos/app/LocationCoordinate2DTransformer.m rename to platform/macos/app/LocationCoordinate2DTransformer.m diff --git a/platform/ios/platform/macos/app/MLNStyle+MBXAdditions.h b/platform/macos/app/MLNStyle+MBXAdditions.h similarity index 100% rename from platform/ios/platform/macos/app/MLNStyle+MBXAdditions.h rename to platform/macos/app/MLNStyle+MBXAdditions.h diff --git a/platform/ios/platform/macos/app/MLNStyle+MBXAdditions.m b/platform/macos/app/MLNStyle+MBXAdditions.m similarity index 100% rename from platform/ios/platform/macos/app/MLNStyle+MBXAdditions.m rename to platform/macos/app/MLNStyle+MBXAdditions.m diff --git a/platform/ios/platform/macos/app/MapDocument.h b/platform/macos/app/MapDocument.h similarity index 100% rename from platform/ios/platform/macos/app/MapDocument.h rename to platform/macos/app/MapDocument.h diff --git a/platform/ios/platform/macos/app/MapDocument.m b/platform/macos/app/MapDocument.m similarity index 100% rename from platform/ios/platform/macos/app/MapDocument.m rename to platform/macos/app/MapDocument.m diff --git a/platform/ios/platform/macos/app/OfflinePackNameValueTransformer.h b/platform/macos/app/OfflinePackNameValueTransformer.h similarity index 100% rename from platform/ios/platform/macos/app/OfflinePackNameValueTransformer.h rename to platform/macos/app/OfflinePackNameValueTransformer.h diff --git a/platform/ios/platform/macos/app/OfflinePackNameValueTransformer.m b/platform/macos/app/OfflinePackNameValueTransformer.m similarity index 100% rename from platform/ios/platform/macos/app/OfflinePackNameValueTransformer.m rename to platform/macos/app/OfflinePackNameValueTransformer.m diff --git a/platform/ios/platform/macos/app/StyleLayerIconTransformer.h b/platform/macos/app/StyleLayerIconTransformer.h similarity index 100% rename from platform/ios/platform/macos/app/StyleLayerIconTransformer.h rename to platform/macos/app/StyleLayerIconTransformer.h diff --git a/platform/ios/platform/macos/app/StyleLayerIconTransformer.m b/platform/macos/app/StyleLayerIconTransformer.m similarity index 100% rename from platform/ios/platform/macos/app/StyleLayerIconTransformer.m rename to platform/macos/app/StyleLayerIconTransformer.m diff --git a/platform/ios/platform/macos/app/TimeIntervalTransformer.h b/platform/macos/app/TimeIntervalTransformer.h similarity index 100% rename from platform/ios/platform/macos/app/TimeIntervalTransformer.h rename to platform/macos/app/TimeIntervalTransformer.h diff --git a/platform/ios/platform/macos/app/TimeIntervalTransformer.m b/platform/macos/app/TimeIntervalTransformer.m similarity index 100% rename from platform/ios/platform/macos/app/TimeIntervalTransformer.m rename to platform/macos/app/TimeIntervalTransformer.m diff --git a/platform/ios/platform/macos/app/bg.lproj/Localizable.strings b/platform/macos/app/ar.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/bg.lproj/Localizable.strings rename to platform/macos/app/ar.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/ca.lproj/Localizable.strings b/platform/macos/app/bg.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/ca.lproj/Localizable.strings rename to platform/macos/app/bg.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/cs.lproj/Localizable.strings b/platform/macos/app/ca.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/cs.lproj/Localizable.strings rename to platform/macos/app/ca.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/da.lproj/Localizable.strings b/platform/macos/app/cs.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/da.lproj/Localizable.strings rename to platform/macos/app/cs.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/de.lproj/Localizable.strings b/platform/macos/app/da.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/de.lproj/Localizable.strings rename to platform/macos/app/da.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/es.lproj/Localizable.strings b/platform/macos/app/de.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/es.lproj/Localizable.strings rename to platform/macos/app/de.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/fi.lproj/Localizable.strings b/platform/macos/app/es.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/fi.lproj/Localizable.strings rename to platform/macos/app/es.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/fr.lproj/Localizable.strings b/platform/macos/app/fi.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/fr.lproj/Localizable.strings rename to platform/macos/app/fi.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/gl.lproj/Localizable.strings b/platform/macos/app/fr.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/gl.lproj/Localizable.strings rename to platform/macos/app/fr.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/he.lproj/Localizable.strings b/platform/macos/app/gl.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/he.lproj/Localizable.strings rename to platform/macos/app/gl.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/hu.lproj/Localizable.strings b/platform/macos/app/he.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/hu.lproj/Localizable.strings rename to platform/macos/app/he.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/heatmap.json b/platform/macos/app/heatmap.json similarity index 100% rename from platform/ios/platform/macos/app/heatmap.json rename to platform/macos/app/heatmap.json diff --git a/platform/ios/platform/macos/app/ja.lproj/Localizable.strings b/platform/macos/app/hu.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/ja.lproj/Localizable.strings rename to platform/macos/app/hu.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/ko.lproj/Localizable.strings b/platform/macos/app/ja.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/ko.lproj/Localizable.strings rename to platform/macos/app/ja.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/lt.lproj/Localizable.strings b/platform/macos/app/ko.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/lt.lproj/Localizable.strings rename to platform/macos/app/ko.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/nl.lproj/Localizable.strings b/platform/macos/app/lt.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/nl.lproj/Localizable.strings rename to platform/macos/app/lt.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/main.m b/platform/macos/app/main.m similarity index 100% rename from platform/ios/platform/macos/app/main.m rename to platform/macos/app/main.m diff --git a/platform/ios/platform/macos/app/pl.lproj/Localizable.strings b/platform/macos/app/nl.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/pl.lproj/Localizable.strings rename to platform/macos/app/nl.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/pt-BR.lproj/Localizable.strings b/platform/macos/app/pl.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/pt-BR.lproj/Localizable.strings rename to platform/macos/app/pl.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/pt-PT.lproj/Localizable.strings b/platform/macos/app/pt-BR.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/pt-PT.lproj/Localizable.strings rename to platform/macos/app/pt-BR.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/ru.lproj/Localizable.strings b/platform/macos/app/pt-PT.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/ru.lproj/Localizable.strings rename to platform/macos/app/pt-PT.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/resources/background.svg b/platform/macos/app/resources/background.svg similarity index 100% rename from platform/ios/platform/macos/app/resources/background.svg rename to platform/macos/app/resources/background.svg diff --git a/platform/ios/platform/macos/app/resources/circle.svg b/platform/macos/app/resources/circle.svg similarity index 100% rename from platform/ios/platform/macos/app/resources/circle.svg rename to platform/macos/app/resources/circle.svg diff --git a/platform/ios/platform/macos/app/resources/fill-extrusion.svg b/platform/macos/app/resources/fill-extrusion.svg similarity index 100% rename from platform/ios/platform/macos/app/resources/fill-extrusion.svg rename to platform/macos/app/resources/fill-extrusion.svg diff --git a/platform/ios/platform/macos/app/resources/fill.svg b/platform/macos/app/resources/fill.svg similarity index 100% rename from platform/ios/platform/macos/app/resources/fill.svg rename to platform/macos/app/resources/fill.svg diff --git a/platform/ios/platform/macos/app/resources/heatmap.svg b/platform/macos/app/resources/heatmap.svg similarity index 100% rename from platform/ios/platform/macos/app/resources/heatmap.svg rename to platform/macos/app/resources/heatmap.svg diff --git a/platform/ios/platform/macos/app/resources/hillshade.svg b/platform/macos/app/resources/hillshade.svg similarity index 100% rename from platform/ios/platform/macos/app/resources/hillshade.svg rename to platform/macos/app/resources/hillshade.svg diff --git a/platform/ios/platform/macos/app/resources/symbol.svg b/platform/macos/app/resources/symbol.svg similarity index 100% rename from platform/ios/platform/macos/app/resources/symbol.svg rename to platform/macos/app/resources/symbol.svg diff --git a/platform/ios/platform/macos/app/sv.lproj/Localizable.strings b/platform/macos/app/ru.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/sv.lproj/Localizable.strings rename to platform/macos/app/ru.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/uk.lproj/Localizable.strings b/platform/macos/app/sv.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/uk.lproj/Localizable.strings rename to platform/macos/app/sv.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/vi.lproj/Localizable.strings b/platform/macos/app/uk.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/vi.lproj/Localizable.strings rename to platform/macos/app/uk.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/zh-Hans.lproj/Localizable.strings b/platform/macos/app/vi.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/zh-Hans.lproj/Localizable.strings rename to platform/macos/app/vi.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/app/wms.json b/platform/macos/app/wms.json similarity index 100% rename from platform/ios/platform/macos/app/wms.json rename to platform/macos/app/wms.json diff --git a/platform/ios/platform/macos/app/zh-Hant.lproj/Localizable.strings b/platform/macos/app/zh-Hans.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/app/zh-Hant.lproj/Localizable.strings rename to platform/macos/app/zh-Hans.lproj/Localizable.strings diff --git a/platform/macos/app/zh-Hant.lproj/Localizable.strings b/platform/macos/app/zh-Hant.lproj/Localizable.strings new file mode 100644 index 000000000..e69de29bb diff --git a/platform/macos/bazel/files.bzl b/platform/macos/bazel/files.bzl new file mode 100644 index 000000000..17be06dcc --- /dev/null +++ b/platform/macos/bazel/files.bzl @@ -0,0 +1,37 @@ +MLN_MACOS_PUBLIC_OBJCPP_SOURCE = [ + "src/MLNAttributionButton.mm", + "src/MLNMapView+IBAdditions.mm", + "src/MLNMapView+OpenGL.mm", + "src/MLNMapView+Impl.mm", + "src/MLNMapView.mm", + "src/MLNOpenGLLayer.mm", + "src/NSColor+MLNAdditions.mm", + "src/NSImage+MLNAdditions.mm", +] + +MLN_MACOS_PUBLIC_OBJC_SOURCE = [ + "src/MLNAnnotationImage.m", + "src/MLNCompassCell.m", + "src/NSProcessInfo+MLNAdditions.m", +] + +MLN_MACOS_PUBLIC_HEADERS = [ + "src/MLNAnnotationImage.h", + "src/NSColor+MLNAdditions.h", + "src/NSProcessInfo+MLNAdditions.h", + "src/MLNCompassCell.h", + "src/MLNAttributionButton.h", + "src/MLNMapView+Impl.h", + "src/MLNMapView+IBAdditions.h", + "src/MLNMapView+OpenGL.h", + "src/MLNMapViewDelegate.h", + "src/MLNMapView.h", + "src/Mapbox.h", + "src/MLNOpenGLLayer.h", + "src/NSImage+MLNAdditions.h", +] + +MLN_MACOS_PRIVATE_HEADERS = [ + "src/MLNAnnotationImage_Private.h", + "src/MLNMapView_Private.h", +] diff --git a/platform/ios/platform/macos/core-files.json b/platform/macos/core-files.json similarity index 100% rename from platform/ios/platform/macos/core-files.json rename to platform/macos/core-files.json diff --git a/platform/ios/platform/macos/docs/doc-README.md b/platform/macos/docs/doc-README.md similarity index 100% rename from platform/ios/platform/macos/docs/doc-README.md rename to platform/macos/docs/doc-README.md diff --git a/platform/ios/platform/macos/docs/guides/Info.plist Keys.md b/platform/macos/docs/guides/Info.plist Keys.md similarity index 100% rename from platform/ios/platform/macos/docs/guides/Info.plist Keys.md rename to platform/macos/docs/guides/Info.plist Keys.md diff --git a/platform/ios/platform/macos/docs/img/screenshot.jpg b/platform/macos/docs/img/screenshot.jpg similarity index 100% rename from platform/ios/platform/macos/docs/img/screenshot.jpg rename to platform/macos/docs/img/screenshot.jpg diff --git a/platform/ios/platform/macos/docs/pod-README.md b/platform/macos/docs/pod-README.md similarity index 100% rename from platform/ios/platform/macos/docs/pod-README.md rename to platform/macos/docs/pod-README.md diff --git a/platform/ios/platform/macos/jazzy.yml b/platform/macos/jazzy.yml similarity index 100% rename from platform/ios/platform/macos/jazzy.yml rename to platform/macos/jazzy.yml diff --git a/platform/macos/macos.cmake b/platform/macos/macos.cmake deleted file mode 100644 index bec07627a..000000000 --- a/platform/macos/macos.cmake +++ /dev/null @@ -1,171 +0,0 @@ -cmake_minimum_required(VERSION 3.19) -set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13") - -# Override default CMake NATIVE_ARCH_ACTUAL -# https://gitlab.kitware.com/cmake/cmake/-/issues/20893 -# https://stackoverflow.com/a/22689917/5531400 -if(CMAKE_GENERATOR STREQUAL Xcode) - set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD)") -endif() -set_target_properties(mbgl-core PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Debug] "YES") - -set_target_properties(mbgl-core PROPERTIES XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES) - -if(MLN_WITH_OPENGL) - find_package(OpenGL REQUIRED) - - target_compile_definitions( - mbgl-core - PUBLIC GL_SILENCE_DEPRECATION - ) - target_sources( - mbgl-core - PRIVATE - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gl/headless_backend.cpp - ${PROJECT_SOURCE_DIR}/platform/darwin/src/gl_functions.cpp ${PROJECT_SOURCE_DIR}/platform/darwin/src/headless_backend_cgl.mm - ) - target_link_libraries( - mbgl-core - PRIVATE OpenGL::GL - ) -endif() - -target_sources( - mbgl-core - PRIVATE - ${PROJECT_SOURCE_DIR}/platform/darwin/src/async_task.cpp - ${PROJECT_SOURCE_DIR}/platform/darwin/src/collator.mm - ${PROJECT_SOURCE_DIR}/platform/darwin/src/http_file_source.mm - ${PROJECT_SOURCE_DIR}/platform/darwin/src/image.mm - ${PROJECT_SOURCE_DIR}/platform/darwin/src/local_glyph_rasterizer.mm - ${PROJECT_SOURCE_DIR}/platform/darwin/src/logging_nslog.mm - ${PROJECT_SOURCE_DIR}/platform/darwin/src/native_apple_interface.m - ${PROJECT_SOURCE_DIR}/platform/darwin/src/nsthread.mm - ${PROJECT_SOURCE_DIR}/platform/darwin/src/number_format.mm - ${PROJECT_SOURCE_DIR}/platform/darwin/src/run_loop.cpp - ${PROJECT_SOURCE_DIR}/platform/darwin/src/string_nsstring.mm - ${PROJECT_SOURCE_DIR}/platform/darwin/src/timer.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gfx/headless_backend.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/gfx/headless_frontend.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/layermanager/layer_manager.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/map/map_snapshotter.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/platform/time.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/asset_file_source.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/mbtiles_file_source.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/database_file_source.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/file_source_manager.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/file_source_request.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/local_file_request.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/local_file_source.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/main_resource_loader.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline_database.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/offline_download.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/online_file_source.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/storage/sqlite3.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/text/bidi.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/compression.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/filesystem.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/monotonic_timer.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/png_writer.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/thread_local.cpp - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/util/utf.cpp -) - -target_compile_options(mbgl-core PRIVATE -fobjc-arc) - -# FIXME: Should not be needed, but now needed by node because of the headless frontend. -target_include_directories( - mbgl-core - PUBLIC ${PROJECT_SOURCE_DIR}/platform/default/include -) - -target_include_directories( - mbgl-core - PRIVATE - ${PROJECT_SOURCE_DIR}/platform/darwin/include ${PROJECT_SOURCE_DIR}/platform/darwin/src ${PROJECT_SOURCE_DIR}/platform/macos/src -) - -include(${PROJECT_SOURCE_DIR}/vendor/icu.cmake) - -target_link_libraries( - mbgl-core - PRIVATE - "-framework AppKit" - "-framework CoreGraphics" - "-framework CoreLocation" - "-framework SystemConfiguration" - mbgl-vendor-icu - sqlite3 - z -) - -add_subdirectory(${PROJECT_SOURCE_DIR}/bin) -add_subdirectory(${PROJECT_SOURCE_DIR}/expression-test) -add_subdirectory(${PROJECT_SOURCE_DIR}/platform/glfw) -if(MLN_WITH_NODE) - add_subdirectory(${PROJECT_SOURCE_DIR}/platform/node) -endif() - -add_executable( - mbgl-test-runner - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/test/main.cpp -) - -target_include_directories( - mbgl-test-runner - PUBLIC ${PROJECT_SOURCE_DIR}/include ${PROJECT_SOURCE_DIR}/test/include -) - -target_compile_definitions( - mbgl-test-runner - PRIVATE WORK_DIRECTORY=${PROJECT_SOURCE_DIR} -) - -target_link_libraries( - mbgl-test-runner - PRIVATE mbgl-compiler-options -Wl,-force_load mbgl-test -) - -add_executable( - mbgl-benchmark-runner - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/benchmark/main.cpp -) - -target_include_directories( - mbgl-benchmark-runner - PUBLIC ${PROJECT_SOURCE_DIR}/benchmark/include -) - -target_link_libraries( - mbgl-benchmark-runner - PRIVATE mbgl-compiler-options -Wl,-force_load mbgl-benchmark -) - -add_executable( - mbgl-render-test-runner - ${PROJECT_SOURCE_DIR}/platform/default/src/mbgl/render-test/main.cpp -) - -target_link_libraries( - mbgl-render-test-runner - PRIVATE mbgl-compiler-options mbgl-render-test -) - -set_property(TARGET mbgl-benchmark-runner PROPERTY FOLDER Executables) -set_property(TARGET mbgl-test-runner PROPERTY FOLDER Executables) -set_property(TARGET mbgl-render-test-runner PROPERTY FOLDER Executables) -set_target_properties(mbgl-benchmark-runner mbgl-test-runner mbgl-render-test-runner PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH[variant=Debug] "YES") - -# Disable benchmarks in CI as they run in VM environment -if(NOT DEFINED ENV{CI}) - add_test(NAME mbgl-benchmark-runner COMMAND mbgl-benchmark-runner WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) -endif() -add_test( - NAME mbgl-test-runner - COMMAND - node - ${PROJECT_SOURCE_DIR}/test/storage/with-server.js - ${PROJECT_SOURCE_DIR}/test/storage/server.js - $ - WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) diff --git a/platform/ios/platform/macos/macos.xcconfig b/platform/macos/macos.xcconfig similarity index 100% rename from platform/ios/platform/macos/macos.xcconfig rename to platform/macos/macos.xcconfig diff --git a/platform/ios/platform/macos/macos.xcodeproj/project.pbxproj b/platform/macos/macos.xcodeproj/project.pbxproj similarity index 100% rename from platform/ios/platform/macos/macos.xcodeproj/project.pbxproj rename to platform/macos/macos.xcodeproj/project.pbxproj diff --git a/platform/ios/platform/macos/macos.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/platform/macos/macos.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from platform/ios/platform/macos/macos.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to platform/macos/macos.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/platform/ios/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/CI.xcscheme b/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/CI.xcscheme similarity index 100% rename from platform/ios/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/CI.xcscheme rename to platform/macos/macos.xcodeproj/xcshareddata/xcschemes/CI.xcscheme diff --git a/platform/ios/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme b/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme similarity index 100% rename from platform/ios/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme rename to platform/macos/macos.xcodeproj/xcshareddata/xcschemes/dynamic.xcscheme diff --git a/platform/ios/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/macosapp.xcscheme b/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/macosapp.xcscheme similarity index 100% rename from platform/ios/platform/macos/macos.xcodeproj/xcshareddata/xcschemes/macosapp.xcscheme rename to platform/macos/macos.xcodeproj/xcshareddata/xcschemes/macosapp.xcscheme diff --git a/platform/ios/platform/macos/macos.xcworkspace/contents.xcworkspacedata b/platform/macos/macos.xcworkspace/contents.xcworkspacedata similarity index 100% rename from platform/ios/platform/macos/macos.xcworkspace/contents.xcworkspacedata rename to platform/macos/macos.xcworkspace/contents.xcworkspacedata diff --git a/platform/ios/platform/ios/ios.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/platform/macos/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from platform/ios/platform/ios/ios.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to platform/macos/macos.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/platform/ios/platform/macos/macos.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist b/platform/macos/macos.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist similarity index 100% rename from platform/ios/platform/macos/macos.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist rename to platform/macos/macos.xcworkspace/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist diff --git a/platform/ios/platform/macos/scripts/deploy-packages.sh b/platform/macos/scripts/deploy-packages.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/macos/scripts/deploy-packages.sh rename to platform/macos/scripts/deploy-packages.sh diff --git a/platform/ios/platform/macos/scripts/document.sh b/platform/macos/scripts/document.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/macos/scripts/document.sh rename to platform/macos/scripts/document.sh diff --git a/platform/ios/platform/macos/scripts/metrics.sh b/platform/macos/scripts/metrics.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/macos/scripts/metrics.sh rename to platform/macos/scripts/metrics.sh diff --git a/platform/ios/platform/macos/scripts/package.sh b/platform/macos/scripts/package.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/macos/scripts/package.sh rename to platform/macos/scripts/package.sh diff --git a/platform/ios/platform/macos/scripts/release-notes-github.md.ejs b/platform/macos/scripts/release-notes-github.md.ejs similarity index 100% rename from platform/ios/platform/macos/scripts/release-notes-github.md.ejs rename to platform/macos/scripts/release-notes-github.md.ejs diff --git a/platform/ios/platform/macos/scripts/release-notes-jazzy.md.ejs b/platform/macos/scripts/release-notes-jazzy.md.ejs similarity index 100% rename from platform/ios/platform/macos/scripts/release-notes-jazzy.md.ejs rename to platform/macos/scripts/release-notes-jazzy.md.ejs diff --git a/platform/ios/platform/macos/scripts/release-notes.js b/platform/macos/scripts/release-notes.js old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/macos/scripts/release-notes.js rename to platform/macos/scripts/release-notes.js diff --git a/platform/ios/platform/macos/scripts/update-version.sh b/platform/macos/scripts/update-version.sh old mode 100755 new mode 100644 similarity index 100% rename from platform/ios/platform/macos/scripts/update-version.sh rename to platform/macos/scripts/update-version.sh diff --git a/platform/ios/platform/macos/sdk-files.json b/platform/macos/sdk-files.json similarity index 100% rename from platform/ios/platform/macos/sdk-files.json rename to platform/macos/sdk-files.json diff --git a/platform/ios/platform/macos/sdk/Base.lproj/Localizable.strings b/platform/macos/sdk/Base.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/Base.lproj/Localizable.strings rename to platform/macos/sdk/Base.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/Base.lproj/MLNAnnotationCallout.xib b/platform/macos/sdk/Base.lproj/MLNAnnotationCallout.xib similarity index 100% rename from platform/ios/platform/macos/sdk/Base.lproj/MLNAnnotationCallout.xib rename to platform/macos/sdk/Base.lproj/MLNAnnotationCallout.xib diff --git a/platform/ios/platform/macos/sdk/Info.plist b/platform/macos/sdk/Info.plist similarity index 100% rename from platform/ios/platform/macos/sdk/Info.plist rename to platform/macos/sdk/Info.plist diff --git a/platform/ios/platform/macos/sdk/ar.lproj/Localizable.strings b/platform/macos/sdk/ar.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/ar.lproj/Localizable.strings rename to platform/macos/sdk/ar.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/bg.lproj/Localizable.strings b/platform/macos/sdk/bg.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/bg.lproj/Localizable.strings rename to platform/macos/sdk/bg.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/ca.lproj/Localizable.strings b/platform/macos/sdk/ca.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/ca.lproj/Localizable.strings rename to platform/macos/sdk/ca.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/cs.lproj/Localizable.strings b/platform/macos/sdk/cs.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/cs.lproj/Localizable.strings rename to platform/macos/sdk/cs.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/da.lproj/Localizable.strings b/platform/macos/sdk/da.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/da.lproj/Localizable.strings rename to platform/macos/sdk/da.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/de.lproj/Localizable.strings b/platform/macos/sdk/de.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/de.lproj/Localizable.strings rename to platform/macos/sdk/de.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/default_marker.pdf b/platform/macos/sdk/default_marker.pdf similarity index 100% rename from platform/ios/platform/macos/sdk/default_marker.pdf rename to platform/macos/sdk/default_marker.pdf diff --git a/platform/ios/platform/macos/sdk/es.lproj/Localizable.strings b/platform/macos/sdk/es.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/es.lproj/Localizable.strings rename to platform/macos/sdk/es.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/fi.lproj/Localizable.strings b/platform/macos/sdk/fi.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/fi.lproj/Localizable.strings rename to platform/macos/sdk/fi.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/fr.lproj/Localizable.strings b/platform/macos/sdk/fr.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/fr.lproj/Localizable.strings rename to platform/macos/sdk/fr.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/gl.lproj/Localizable.strings b/platform/macos/sdk/gl.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/gl.lproj/Localizable.strings rename to platform/macos/sdk/gl.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/he.lproj/Localizable.strings b/platform/macos/sdk/he.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/he.lproj/Localizable.strings rename to platform/macos/sdk/he.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/hu.lproj/Localizable.strings b/platform/macos/sdk/hu.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/hu.lproj/Localizable.strings rename to platform/macos/sdk/hu.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/ja.lproj/Localizable.strings b/platform/macos/sdk/ja.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/ja.lproj/Localizable.strings rename to platform/macos/sdk/ja.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/lt.lproj/Localizable.strings b/platform/macos/sdk/lt.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/lt.lproj/Localizable.strings rename to platform/macos/sdk/lt.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/mapbox.pdf b/platform/macos/sdk/mapbox.pdf similarity index 100% rename from platform/ios/platform/macos/sdk/mapbox.pdf rename to platform/macos/sdk/mapbox.pdf diff --git a/platform/ios/platform/macos/sdk/mapbox_helmet.pdf b/platform/macos/sdk/mapbox_helmet.pdf similarity index 100% rename from platform/ios/platform/macos/sdk/mapbox_helmet.pdf rename to platform/macos/sdk/mapbox_helmet.pdf diff --git a/platform/ios/platform/macos/sdk/nl.lproj/Localizable.strings b/platform/macos/sdk/nl.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/nl.lproj/Localizable.strings rename to platform/macos/sdk/nl.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/pl.lproj/Localizable.strings b/platform/macos/sdk/pl.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/pl.lproj/Localizable.strings rename to platform/macos/sdk/pl.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/pt-BR.lproj/Localizable.strings b/platform/macos/sdk/pt-BR.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/pt-BR.lproj/Localizable.strings rename to platform/macos/sdk/pt-BR.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/pt-PT.lproj/Localizable.strings b/platform/macos/sdk/pt-PT.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/pt-PT.lproj/Localizable.strings rename to platform/macos/sdk/pt-PT.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/ru.lproj/Localizable.strings b/platform/macos/sdk/ru.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/ru.lproj/Localizable.strings rename to platform/macos/sdk/ru.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/sv.lproj/Localizable.strings b/platform/macos/sdk/sv.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/sv.lproj/Localizable.strings rename to platform/macos/sdk/sv.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/uk.lproj/Localizable.strings b/platform/macos/sdk/uk.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/uk.lproj/Localizable.strings rename to platform/macos/sdk/uk.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/vi.lproj/Localizable.strings b/platform/macos/sdk/vi.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/vi.lproj/Localizable.strings rename to platform/macos/sdk/vi.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/zh-Hans.lproj/Localizable.strings b/platform/macos/sdk/zh-Hans.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/zh-Hans.lproj/Localizable.strings rename to platform/macos/sdk/zh-Hans.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/sdk/zh-Hant.lproj/Localizable.strings b/platform/macos/sdk/zh-Hant.lproj/Localizable.strings similarity index 100% rename from platform/ios/platform/macos/sdk/zh-Hant.lproj/Localizable.strings rename to platform/macos/sdk/zh-Hant.lproj/Localizable.strings diff --git a/platform/ios/platform/macos/src/MLNAnnotationImage.h b/platform/macos/src/MLNAnnotationImage.h similarity index 100% rename from platform/ios/platform/macos/src/MLNAnnotationImage.h rename to platform/macos/src/MLNAnnotationImage.h diff --git a/platform/ios/platform/macos/src/MLNAnnotationImage.m b/platform/macos/src/MLNAnnotationImage.m similarity index 100% rename from platform/ios/platform/macos/src/MLNAnnotationImage.m rename to platform/macos/src/MLNAnnotationImage.m diff --git a/platform/ios/platform/macos/src/MLNAnnotationImage_Private.h b/platform/macos/src/MLNAnnotationImage_Private.h similarity index 100% rename from platform/ios/platform/macos/src/MLNAnnotationImage_Private.h rename to platform/macos/src/MLNAnnotationImage_Private.h diff --git a/platform/ios/platform/macos/src/MLNAttributionButton.h b/platform/macos/src/MLNAttributionButton.h similarity index 100% rename from platform/ios/platform/macos/src/MLNAttributionButton.h rename to platform/macos/src/MLNAttributionButton.h diff --git a/platform/ios/platform/macos/src/MLNAttributionButton.mm b/platform/macos/src/MLNAttributionButton.mm similarity index 100% rename from platform/ios/platform/macos/src/MLNAttributionButton.mm rename to platform/macos/src/MLNAttributionButton.mm diff --git a/platform/ios/platform/macos/src/MLNCompassCell.h b/platform/macos/src/MLNCompassCell.h similarity index 100% rename from platform/ios/platform/macos/src/MLNCompassCell.h rename to platform/macos/src/MLNCompassCell.h diff --git a/platform/ios/platform/macos/src/MLNCompassCell.m b/platform/macos/src/MLNCompassCell.m similarity index 100% rename from platform/ios/platform/macos/src/MLNCompassCell.m rename to platform/macos/src/MLNCompassCell.m diff --git a/platform/ios/platform/macos/src/MLNMapView+IBAdditions.h b/platform/macos/src/MLNMapView+IBAdditions.h similarity index 100% rename from platform/ios/platform/macos/src/MLNMapView+IBAdditions.h rename to platform/macos/src/MLNMapView+IBAdditions.h diff --git a/platform/ios/platform/macos/src/MLNMapView+IBAdditions.mm b/platform/macos/src/MLNMapView+IBAdditions.mm similarity index 100% rename from platform/ios/platform/macos/src/MLNMapView+IBAdditions.mm rename to platform/macos/src/MLNMapView+IBAdditions.mm diff --git a/platform/ios/platform/macos/src/MLNMapView+Impl.h b/platform/macos/src/MLNMapView+Impl.h similarity index 100% rename from platform/ios/platform/macos/src/MLNMapView+Impl.h rename to platform/macos/src/MLNMapView+Impl.h diff --git a/platform/ios/platform/macos/src/MLNMapView+Impl.mm b/platform/macos/src/MLNMapView+Impl.mm similarity index 100% rename from platform/ios/platform/macos/src/MLNMapView+Impl.mm rename to platform/macos/src/MLNMapView+Impl.mm diff --git a/platform/ios/platform/macos/src/MLNMapView+OpenGL.h b/platform/macos/src/MLNMapView+OpenGL.h similarity index 86% rename from platform/ios/platform/macos/src/MLNMapView+OpenGL.h rename to platform/macos/src/MLNMapView+OpenGL.h index e81c58d62..fb882b707 100644 --- a/platform/ios/platform/macos/src/MLNMapView+OpenGL.h +++ b/platform/macos/src/MLNMapView+OpenGL.h @@ -17,9 +17,7 @@ public: // Implementation of mbgl::gfx::RendererBackend public: - mbgl::gfx::Renderable& getDefaultRenderable() override { - return *this; - } + mbgl::gfx::Renderable& getDefaultRenderable() override { return *this; } private: void activate() override; @@ -36,9 +34,7 @@ private: // Implementation of MLNMapViewImpl public: - mbgl::gfx::RendererBackend& getRendererBackend() override { - return *this; - } + mbgl::gfx::RendererBackend& getRendererBackend() override { return *this; } mbgl::PremultipliedImage readStillImage() override; CGLContextObj getCGLContextObj() override; diff --git a/platform/ios/platform/macos/src/MLNMapView+OpenGL.mm b/platform/macos/src/MLNMapView+OpenGL.mm similarity index 100% rename from platform/ios/platform/macos/src/MLNMapView+OpenGL.mm rename to platform/macos/src/MLNMapView+OpenGL.mm diff --git a/platform/ios/platform/macos/src/MLNMapView.h b/platform/macos/src/MLNMapView.h similarity index 100% rename from platform/ios/platform/macos/src/MLNMapView.h rename to platform/macos/src/MLNMapView.h diff --git a/platform/ios/platform/macos/src/MLNMapView.mm b/platform/macos/src/MLNMapView.mm similarity index 100% rename from platform/ios/platform/macos/src/MLNMapView.mm rename to platform/macos/src/MLNMapView.mm diff --git a/platform/ios/platform/macos/src/MLNMapViewDelegate.h b/platform/macos/src/MLNMapViewDelegate.h similarity index 100% rename from platform/ios/platform/macos/src/MLNMapViewDelegate.h rename to platform/macos/src/MLNMapViewDelegate.h diff --git a/platform/ios/platform/macos/src/MLNMapView_Private.h b/platform/macos/src/MLNMapView_Private.h similarity index 100% rename from platform/ios/platform/macos/src/MLNMapView_Private.h rename to platform/macos/src/MLNMapView_Private.h diff --git a/platform/ios/platform/macos/src/MLNOpenGLLayer.h b/platform/macos/src/MLNOpenGLLayer.h similarity index 100% rename from platform/ios/platform/macos/src/MLNOpenGLLayer.h rename to platform/macos/src/MLNOpenGLLayer.h diff --git a/platform/ios/platform/macos/src/MLNOpenGLLayer.mm b/platform/macos/src/MLNOpenGLLayer.mm similarity index 100% rename from platform/ios/platform/macos/src/MLNOpenGLLayer.mm rename to platform/macos/src/MLNOpenGLLayer.mm diff --git a/platform/ios/platform/macos/src/Mapbox.h b/platform/macos/src/Mapbox.h similarity index 100% rename from platform/ios/platform/macos/src/Mapbox.h rename to platform/macos/src/Mapbox.h diff --git a/platform/ios/platform/macos/src/NSColor+MLNAdditions.h b/platform/macos/src/NSColor+MLNAdditions.h similarity index 100% rename from platform/ios/platform/macos/src/NSColor+MLNAdditions.h rename to platform/macos/src/NSColor+MLNAdditions.h diff --git a/platform/ios/platform/macos/src/NSColor+MLNAdditions.mm b/platform/macos/src/NSColor+MLNAdditions.mm similarity index 100% rename from platform/ios/platform/macos/src/NSColor+MLNAdditions.mm rename to platform/macos/src/NSColor+MLNAdditions.mm diff --git a/platform/ios/platform/macos/src/NSImage+MLNAdditions.h b/platform/macos/src/NSImage+MLNAdditions.h similarity index 100% rename from platform/ios/platform/macos/src/NSImage+MLNAdditions.h rename to platform/macos/src/NSImage+MLNAdditions.h diff --git a/platform/ios/platform/macos/src/NSImage+MLNAdditions.mm b/platform/macos/src/NSImage+MLNAdditions.mm similarity index 100% rename from platform/ios/platform/macos/src/NSImage+MLNAdditions.mm rename to platform/macos/src/NSImage+MLNAdditions.mm diff --git a/platform/ios/platform/macos/src/NSProcessInfo+MLNAdditions.h b/platform/macos/src/NSProcessInfo+MLNAdditions.h similarity index 100% rename from platform/ios/platform/macos/src/NSProcessInfo+MLNAdditions.h rename to platform/macos/src/NSProcessInfo+MLNAdditions.h diff --git a/platform/ios/platform/macos/src/NSProcessInfo+MLNAdditions.m b/platform/macos/src/NSProcessInfo+MLNAdditions.m similarity index 100% rename from platform/ios/platform/macos/src/NSProcessInfo+MLNAdditions.m rename to platform/macos/src/NSProcessInfo+MLNAdditions.m diff --git a/platform/ios/platform/macos/test/CI.xctestplan b/platform/macos/test/CI.xctestplan similarity index 100% rename from platform/ios/platform/macos/test/CI.xctestplan rename to platform/macos/test/CI.xctestplan diff --git a/platform/ios/platform/macos/test/Info.plist b/platform/macos/test/Info.plist similarity index 100% rename from platform/ios/platform/macos/test/Info.plist rename to platform/macos/test/Info.plist diff --git a/platform/ios/platform/macos/test/MLNAnnotationTests.m b/platform/macos/test/MLNAnnotationTests.m similarity index 100% rename from platform/ios/platform/macos/test/MLNAnnotationTests.m rename to platform/macos/test/MLNAnnotationTests.m diff --git a/platform/ios/platform/macos/test/MLNAttributionButtonTests.m b/platform/macos/test/MLNAttributionButtonTests.m similarity index 100% rename from platform/ios/platform/macos/test/MLNAttributionButtonTests.m rename to platform/macos/test/MLNAttributionButtonTests.m diff --git a/platform/ios/platform/macos/test/MLNMapViewDelegateIntegrationTests.swift b/platform/macos/test/MLNMapViewDelegateIntegrationTests.swift similarity index 100% rename from platform/ios/platform/macos/test/MLNMapViewDelegateIntegrationTests.swift rename to platform/macos/test/MLNMapViewDelegateIntegrationTests.swift diff --git a/render-test/BUILD.bazel b/render-test/BUILD.bazel index 2c2be3bdb..166c394cb 100644 --- a/render-test/BUILD.bazel +++ b/render-test/BUILD.bazel @@ -34,7 +34,7 @@ cc_library( deps = [ "//expression-test:test_runner_common", ] + select({ - "//:ios": ["//platform/ios:sdk"], + "//:ios": ["//platform:ios-sdk"], "//:linux": ["//platform/linux:impl"], }), ) diff --git a/scripts/generate-style-code.js b/scripts/generate-style-code.js index 6197bb66e..d2a23f60d 100755 --- a/scripts/generate-style-code.js +++ b/scripts/generate-style-code.js @@ -1,6 +1,8 @@ #!/usr/bin/env node 'use strict'; +const { ArgumentParser } = require("argparse"); +const path = require('path'); const fs = require('fs'); const ejs = require('ejs'); const spec = require('./style-spec'); @@ -8,6 +10,18 @@ const colorParser = require('csscolorparser'); require('./style-code'); +// Parse command line +const args = (() => { + const parser = new ArgumentParser({ + description: "MapLibre Shader Tools" + }); + parser.add_argument("--root", "--r", { + help: "Directory root to place generated code", + required: false + }); + return parser.parse_args(); +})(); + function parseCSSColor(str) { const color = colorParser.parseCSSColor(str); return [ @@ -208,10 +222,10 @@ global.defaultValue = function (property) { } }; -const layerHpp = ejs.compile(fs.readFileSync(`${__dirname}/../include/mbgl/style/layers/layer.hpp.ejs`, 'utf8'), {strict: true}); -const layerCpp = ejs.compile(fs.readFileSync(`${__dirname}/../src/mbgl/style/layers/layer.cpp.ejs`, 'utf8'), {strict: true}); -const propertiesHpp = ejs.compile(fs.readFileSync(`${__dirname}/../src/mbgl/style/layers/layer_properties.hpp.ejs`, 'utf8'), {strict: true}); -const propertiesCpp = ejs.compile(fs.readFileSync(`${__dirname}/../src/mbgl/style/layers/layer_properties.cpp.ejs`, 'utf8'), {strict: true}); +const layerHpp = ejs.compile(fs.readFileSync(`include/mbgl/style/layers/layer.hpp.ejs`, 'utf8'), {strict: true}); +const layerCpp = ejs.compile(fs.readFileSync(`src/mbgl/style/layers/layer.cpp.ejs`, 'utf8'), {strict: true}); +const propertiesHpp = ejs.compile(fs.readFileSync(`src/mbgl/style/layers/layer_properties.hpp.ejs`, 'utf8'), {strict: true}); +const propertiesCpp = ejs.compile(fs.readFileSync(`src/mbgl/style/layers/layer_properties.cpp.ejs`, 'utf8'), {strict: true}); const collator = new Intl.Collator("en-US"); @@ -259,16 +273,16 @@ const layers = Object.keys(spec.layer.type.values).map((type) => { for (const layer of layers) { const layerFileName = layer.type.replace('-', '_'); - writeIfModified(`${__dirname}/../src/mbgl/style/layers/${layerFileName}_layer_properties.hpp`, propertiesHpp(layer)); - writeIfModified(`${__dirname}/../src/mbgl/style/layers/${layerFileName}_layer_properties.cpp`, propertiesCpp(layer)); + writeIfModified(`src/mbgl/style/layers/${layerFileName}_layer_properties.hpp`, propertiesHpp(layer), args.root); + writeIfModified(`src/mbgl/style/layers/${layerFileName}_layer_properties.cpp`, propertiesCpp(layer), args.root); // Remove our fake property for the external interace. if (layer.type === 'line') { layer.paintProperties = layer.paintProperties.filter(property => property.name !== 'line-floor-width'); } - writeIfModified(`${__dirname}/../include/mbgl/style/layers/${layerFileName}_layer.hpp`, layerHpp(layer)); - writeIfModified(`${__dirname}/../src/mbgl/style/layers/${layerFileName}_layer.cpp`, layerCpp(layer)); + writeIfModified(`include/mbgl/style/layers/${layerFileName}_layer.hpp`, layerHpp(layer), args.root); + writeIfModified(`src/mbgl/style/layers/${layerFileName}_layer.cpp`, layerCpp(layer), args.root); } // Light @@ -284,7 +298,7 @@ const lightProperties = Object.keys(spec[`light`]).reduce((memo, name) => { // to get a deterministic order. lightProperties.sort((a, b) => collator.compare(a.name, b.name)); -const lightHpp = ejs.compile(fs.readFileSync(`${__dirname}/../include/mbgl/style/light.hpp.ejs`, 'utf8'), {strict: true}); -const lightCpp = ejs.compile(fs.readFileSync(`${__dirname}/../src/mbgl/style/light.cpp.ejs`, 'utf8'), {strict: true}); -writeIfModified(`${__dirname}/../include/mbgl/style/light.hpp`, lightHpp({properties: lightProperties})); -writeIfModified(`${__dirname}/../src/mbgl/style/light.cpp`, lightCpp({properties: lightProperties})); +const lightHpp = ejs.compile(fs.readFileSync(`include/mbgl/style/light.hpp.ejs`, 'utf8'), {strict: true}); +const lightCpp = ejs.compile(fs.readFileSync(`src/mbgl/style/light.cpp.ejs`, 'utf8'), {strict: true}); +writeIfModified(`include/mbgl/style/light.hpp`, lightHpp({properties: lightProperties}), args.root); +writeIfModified(`src/mbgl/style/light.cpp`, lightCpp({properties: lightProperties}), args.root); diff --git a/scripts/style-code.js b/scripts/style-code.js index 3f0d0c874..fd6bf024b 100644 --- a/scripts/style-code.js +++ b/scripts/style-code.js @@ -35,7 +35,16 @@ process.on('exit', function() { fs.writeFileSync(list, files.join("\n")); }); -global.writeIfModified = function(filename, newContent) { +global.writeIfModified = function(filename, newContent, output) { + if (output) { + filename = path.resolve(path.join(output, filename)); + } + + const info = path.parse(filename); + if (!fs.existsSync(info.dir)) { + fs.mkdirSync(info.dir, {recursive: true}); + } + files.push(filename); try { const oldContent = fs.readFileSync(filename, 'utf8'); diff --git a/shaders/generate_shader_code.js b/shaders/generate_shader_code.js index bad2af66b..af48723bd 100644 --- a/shaders/generate_shader_code.js +++ b/shaders/generate_shader_code.js @@ -1,14 +1,14 @@ #!/usr/bin/env node 'use strict'; +console.log("Generating shaders..."); + const { ArgumentParser } = require("argparse"); const path = require("node:path"); const fs = require("node:fs") const os = require("node:os"); -const generatedHeader = `// Generated code, do not modify this file! -// Generated on ${new Date().toISOString()} by ${os.userInfo().username} using shaders/generate_shader_code.js -`; +const generatedHeader = `// Generated code, do not modify this file!`; const newAttribLocationMapping = (source) => { return { @@ -116,6 +116,78 @@ ${precision} ${type} ${name} = u_${name}; }); }; +/// This variant does not emit any uniforms and instead controls access to UBOs +const pragmaMapConvertOnlyVertexArrays = (source, pragmaMap, attribLocations, pipelineStage) => { + const re = /#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g; + + if (pipelineStage == "fragment") { + return source.replace(re, (match, operation, precision, type, name) => { + pragmaMap[name] = true; + if (operation === 'define') { + return `#ifndef HAS_UNIFORM_u_${name} +in ${precision} ${type} ${name}; +#endif`; + } else /* if (operation === 'initialize') */ { + return `#ifdef HAS_UNIFORM_u_${name} +${precision} ${type} ${name} = u_${name}; +#endif`; + } + }); + } + + // else pipelineStage == "vertex" + + return source.replace(re, (match, operation, precision, type, name) => { + const attrType = type === 'float' ? 'vec2' : 'vec4'; + const unpackType = name.match(/color/) ? 'color' : attrType; + + if (pragmaMap[name]) { + if (operation === 'define') { + return `#ifndef HAS_UNIFORM_u_${name} +layout (location = ${locationForAttrib(attribLocations, name)}) in ${precision} ${attrType} a_${name}; +out ${precision} ${type} ${name}; +#endif`; + } else /* if (operation === 'initialize') */ { + if (unpackType === 'vec4') { + // vec4 attributes are only used for cross-faded properties, and are not packed + return `#ifndef HAS_UNIFORM_u_${name} +${name} = a_${name}; +#else +${precision} ${type} ${name} = u_${name}; +#endif`; + } else { + return `#ifndef HAS_UNIFORM_u_${name} +${name} = unpack_mix_${unpackType}(a_${name}, u_${name}_t); +#else +${precision} ${type} ${name} = u_${name}; +#endif`; + } + } + } else { + if (operation === 'define') { + return `#ifndef HAS_UNIFORM_u_${name} +layout (location = ${locationForAttrib(attribLocations, name)}) in ${precision} ${attrType} a_${name}; +#endif`; + } else /* if (operation === 'initialize') */ { + if (unpackType === 'vec4') { + // vec4 attributes are only used for cross-faded properties, and are not packed + return `#ifndef HAS_UNIFORM_u_${name} +${precision} ${type} ${name} = a_${name}; +#else +${precision} ${type} ${name} = u_${name}; +#endif`; + } else /* */{ + return `#ifndef HAS_UNIFORM_u_${name} +${precision} ${type} ${name} = unpack_mix_${unpackType}(a_${name}, u_${name}_t); +#else +${precision} ${type} ${name} = u_${name}; +#endif`; + } + } + } + }); +}; + const strip = (source) => { return source .replace(/^\s+/gm, "\n") // indentation, leading whitespace @@ -130,13 +202,8 @@ const args = (() => { const parser = new ArgumentParser({ description: "MapLibre Shader Tools" }); - parser.add_argument("--input", "--i", { - help: "Input folder location containing shaders and the manifest JSON (Must be named 'manifest.json')", - required: true - - }); - parser.add_argument("--output", "--o", { - help: "Output folder location", + parser.add_argument("--root", "--r", { + help: "Directory root to place generated code", required: true }); parser.add_argument("--compress", "--c", { @@ -153,22 +220,36 @@ const args = (() => { // Generate shader source headers +const shaderRoot = "shaders/"; +const outputRoot = path.join((args.root ? args.root : ""), "include/mbgl/shaders"); let generatedHeaders = []; let shaderNames = []; -JSON.parse(fs.readFileSync(path.join(args.input, "manifest.json"))) + +console.log("Writing shaders to ", outputRoot); + +JSON.parse(fs.readFileSync(path.join(shaderRoot, "manifest.json"))) .filter(it => typeof it == "object") .forEach((elem) => { - const fragmentSource = fs.readFileSync(path.join(args.input, elem.glsl_frag), {encoding: "utf8"}); - const vertexSource = fs.readFileSync(path.join(args.input, elem.glsl_vert), {encoding: "utf8"}); + const fragmentSource = fs.readFileSync(path.join(shaderRoot, elem.glsl_frag), {encoding: "utf8"}); + const vertexSource = fs.readFileSync(path.join(shaderRoot, elem.glsl_vert), {encoding: "utf8"}); let pragmaMap = []; let attribMap = newAttribLocationMapping(vertexSource); - const frag = pragmaMapConvert(fragmentSource, pragmaMap, attribMap, "fragment"); - const vert = pragmaMapConvert(vertexSource, pragmaMap, attribMap, "vertex"); + const frag = elem.uses_ubos + ? pragmaMapConvertOnlyVertexArrays(fragmentSource, pragmaMap, attribMap, "fragment") + : pragmaMapConvert(fragmentSource, pragmaMap, attribMap, "fragment"); + const vert = elem.uses_ubos + ? pragmaMapConvertOnlyVertexArrays(vertexSource, pragmaMap, attribMap, "vertex") + : pragmaMapConvert(vertexSource, pragmaMap, attribMap, "vertex"); + + const glRoot = path.join(outputRoot, "gl"); + if (!fs.existsSync(glRoot)) { + fs.mkdirSync(glRoot, {recursive: true}); // Ensure target directory is available + } fs.writeFileSync( - path.join(args.output, elem.header + ".hpp"), + path.join(glRoot, elem.header + ".hpp"), `${generatedHeader} #pragma once #include @@ -176,7 +257,9 @@ JSON.parse(fs.readFileSync(path.join(args.input, "manifest.json"))) namespace mbgl { namespace shaders { -template <> struct ShaderSource { +template <> +struct ShaderSource { + static constexpr const char* name = "${elem.name}"; static constexpr const char* vertex = R"(${args.strip ? strip(vert) : vert})"; static constexpr const char* fragment = R"(${args.strip ? strip(frag) : frag})"; }; @@ -190,7 +273,7 @@ template <> struct ShaderSource @@ -201,7 +284,7 @@ ${generatedHeaders.join('\n')} `); // Generate shader_source.hpp -fs.writeFileSync(path.join(args.output, "shader_source.hpp"), +fs.writeFileSync(path.join(outputRoot, "shader_source.hpp"), `${generatedHeader} #pragma once #include @@ -221,10 +304,13 @@ enum class BuiltIn { /// @tparam T One of the built-in shader types available in the BuiltIn enum /// @tparam The desired graphics API to request shader code for. One of /// gfx::Backend::Type enums. -template struct ShaderSource; +template +struct ShaderSource; /// @brief A specialization of the ShaderSource template for no shader code. -template <> struct ShaderSource { +template <> +struct ShaderSource { + static constexpr const char* name = ""; static constexpr const char* vertex = ""; static constexpr const char* fragment = ""; }; @@ -232,3 +318,5 @@ template <> struct ShaderSource { } // namespace shaders } // namespace mbgl `); + +console.log("Shaders generated!"); \ No newline at end of file