diff options
author | Fabian Guerra Soto <fabian.guerra@mapbox.com> | 2019-06-03 07:32:20 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-03 07:32:20 -0700 |
commit | 402645109f8d0535cac132d824d39f38a4f1c558 (patch) | |
tree | 61969265c1e4c6bb9840d8f376260301d7e32556 /platform | |
parent | b2428835871933ecf5a93e86493bac0b76db0ede (diff) | |
download | qtlocation-mapboxgl-402645109f8d0535cac132d824d39f38a4f1c558.tar.gz |
[ios] Fix content insets with custom edge padding. (#14813)
* [ios] Fix content insets with custom edge padding.
* [ios, macos] Consolidated edge insets math
* [macos] Add content insets to edge padding when setting camera
* [ios, macos] Updated changelogs
* [ios, macos] Clarify setCamera:withDuration:animationTimingFunction:edgePadding method documentation.
Diffstat (limited to 'platform')
-rw-r--r-- | platform/darwin/src/MGLGeometry_Private.h | 20 | ||||
-rw-r--r-- | platform/darwin/src/NSExpression+MGLAdditions.mm | 3 | ||||
-rw-r--r-- | platform/darwin/src/NSValue+MGLStyleAttributeAdditions.mm | 4 | ||||
-rw-r--r-- | platform/ios/CHANGELOG.md | 4 | ||||
-rw-r--r-- | platform/ios/src/MGLMapView.h | 3 | ||||
-rw-r--r-- | platform/ios/src/MGLMapView.mm | 4 | ||||
-rw-r--r-- | platform/macos/CHANGELOG.md | 4 | ||||
-rw-r--r-- | platform/macos/src/MGLMapView.h | 3 | ||||
-rw-r--r-- | platform/macos/src/MGLMapView.mm | 3 |
9 files changed, 34 insertions, 14 deletions
diff --git a/platform/darwin/src/MGLGeometry_Private.h b/platform/darwin/src/MGLGeometry_Private.h index b91d4e0f81..a89a382c5e 100644 --- a/platform/darwin/src/MGLGeometry_Private.h +++ b/platform/darwin/src/MGLGeometry_Private.h @@ -97,14 +97,24 @@ NS_INLINE BOOL MGLLocationCoordinate2DIsValid(CLLocationCoordinate2D coordinate) } #if TARGET_OS_IPHONE -NS_INLINE mbgl::EdgeInsets MGLEdgeInsetsFromNSEdgeInsets(UIEdgeInsets insets) { - return { insets.top, insets.left, insets.bottom, insets.right }; -} + #define MGLEdgeInsets UIEdgeInsets + #define MGLEdgeInsetsMake UIEdgeInsetsMake #else -NS_INLINE mbgl::EdgeInsets MGLEdgeInsetsFromNSEdgeInsets(NSEdgeInsets insets) { + #define MGLEdgeInsets NSEdgeInsets + #define MGLEdgeInsetsMake NSEdgeInsetsMake +#endif + +NS_INLINE mbgl::EdgeInsets MGLEdgeInsetsFromNSEdgeInsets(MGLEdgeInsets insets) { return { insets.top, insets.left, insets.bottom, insets.right }; } -#endif + +/// Returns the combination of two edge insets. +NS_INLINE MGLEdgeInsets MGLEdgeInsetsInsetEdgeInset(MGLEdgeInsets base, MGLEdgeInsets inset) { + return MGLEdgeInsetsMake(base.top + inset.top, + base.left + inset.left, + base.bottom + inset.bottom, + base.right + inset.right); +} /** Returns MGLRadianCoordinate2D, converted from CLLocationCoordinate2D. */ NS_INLINE MGLRadianCoordinate2D MGLRadianCoordinateFromLocationCoordinate(CLLocationCoordinate2D locationCoordinate) { diff --git a/platform/darwin/src/NSExpression+MGLAdditions.mm b/platform/darwin/src/NSExpression+MGLAdditions.mm index b3060b5787..2ca4e0ed88 100644 --- a/platform/darwin/src/NSExpression+MGLAdditions.mm +++ b/platform/darwin/src/NSExpression+MGLAdditions.mm @@ -1,13 +1,12 @@ #import "MGLFoundation_Private.h" +#import "MGLGeometry_Private.h" #import "NSExpression+MGLPrivateAdditions.h" #import "MGLTypes.h" #if TARGET_OS_IPHONE #import "UIColor+MGLAdditions.h" - #define MGLEdgeInsets UIEdgeInsets #else #import "NSColor+MGLAdditions.h" - #define MGLEdgeInsets NSEdgeInsets #endif #import "NSPredicate+MGLAdditions.h" #import "NSValue+MGLStyleAttributeAdditions.h" diff --git a/platform/darwin/src/NSValue+MGLStyleAttributeAdditions.mm b/platform/darwin/src/NSValue+MGLStyleAttributeAdditions.mm index e2cde278f4..aa3e003d04 100644 --- a/platform/darwin/src/NSValue+MGLStyleAttributeAdditions.mm +++ b/platform/darwin/src/NSValue+MGLStyleAttributeAdditions.mm @@ -1,11 +1,9 @@ #import "NSValue+MGLStyleAttributeAdditions.h" #import "MGLLight.h" #import "MGLLoggingConfiguration_Private.h" +#import "MGLGeometry_Private.h" #if TARGET_OS_IPHONE #import <UIKit/UIKit.h> - #define MGLEdgeInsets UIEdgeInsets -#else - #define MGLEdgeInsets NSEdgeInsets #endif @implementation NSValue (MGLStyleAttributeAdditions) diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md index 3ddeb6b314..045daf4cad 100644 --- a/platform/ios/CHANGELOG.md +++ b/platform/ios/CHANGELOG.md @@ -8,6 +8,10 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONT * Setting `MGLMapView.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)) +### Other changes + +* The `-[MGLMapView setCamera:withDuration:animationTimingFunction:edgePadding:completionHandler:]` method now adds the current value of the `MGLMapView.contentInset` property to the `edgePadding` parameter. ([#14813](https://github.com/mapbox/mapbox-gl-native/pull/14813)) + ## 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). diff --git a/platform/ios/src/MGLMapView.h b/platform/ios/src/MGLMapView.h index 63bd28fc0c..3baae2ee3c 100644 --- a/platform/ios/src/MGLMapView.h +++ b/platform/ios/src/MGLMapView.h @@ -1036,7 +1036,8 @@ MGL_EXPORT /** Moves the viewpoint to a different location with respect to the map with an - optional transition duration and timing function. + optional transition duration and timing function, and optionally some additional + padding on each side. @param camera The new viewpoint. @param duration The amount of time, measured in seconds, that the transition diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index c2ab9c9fc1..077729d448 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -3557,7 +3557,7 @@ public: - (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function completionHandler:(nullable void (^)(void))completion { MGLLogDebug(@"Setting camera: %@ duration: %f animationTimingFunction: %@ completionHandler: %@", camera, duration, function, completion); - [self setCamera:camera withDuration:duration animationTimingFunction:function edgePadding:self.contentInset completionHandler:completion]; + [self setCamera:camera withDuration:duration animationTimingFunction:function edgePadding:UIEdgeInsetsZero completionHandler:completion]; } - (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function edgePadding:(UIEdgeInsets)edgePadding completionHandler:(nullable void (^)(void))completion { @@ -3571,6 +3571,8 @@ public: } MGLLogDebug(@"Setting camera: %@ duration: %f animationTimingFunction: %@ edgePadding: %@ completionHandler: %@", camera, duration, function, NSStringFromUIEdgeInsets(edgePadding), completion); + + edgePadding = MGLEdgeInsetsInsetEdgeInset(edgePadding, self.contentInset); mbgl::AnimationOptions animationOptions; if (duration > 0) diff --git a/platform/macos/CHANGELOG.md b/platform/macos/CHANGELOG.md index e3f1c84547..520f8c204b 100644 --- a/platform/macos/CHANGELOG.md +++ b/platform/macos/CHANGELOG.md @@ -6,6 +6,10 @@ * Setting `MGLMapView.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)) +### Other changes + +* The `-[MGLMapView setCamera:withDuration:animationTimingFunction:edgePadding:completionHandler:]` method now adds the current value of the `MGLMapView.contentInsets` property to the `edgePadding` parameter. ([#14813](https://github.com/mapbox/mapbox-gl-native/pull/14813)) + ## 0.14.0 - May 22, 2018 ### Styles and rendering diff --git a/platform/macos/src/MGLMapView.h b/platform/macos/src/MGLMapView.h index ddb5747109..21ae8c2974 100644 --- a/platform/macos/src/MGLMapView.h +++ b/platform/macos/src/MGLMapView.h @@ -325,7 +325,8 @@ MGL_EXPORT IB_DESIGNABLE /** Moves the viewpoint to a different location with respect to the map with an - optional transition duration and timing function. + optional transition duration and timing function, and optionally some additional + padding on each side. @param camera The new viewpoint. @param duration The amount of time, measured in seconds, that the transition diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm index 589a39f0b3..04b895bb50 100644 --- a/platform/macos/src/MGLMapView.mm +++ b/platform/macos/src/MGLMapView.mm @@ -1168,10 +1168,11 @@ public: - (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function completionHandler:(nullable void (^)(void))completion { MGLLogDebug(@"Setting camera: %@ duration: %f animationTimingFunction: %@", camera, duration, function); - [self setCamera:camera withDuration:duration animationTimingFunction:function edgePadding:self.contentInsets completionHandler:completion]; + [self setCamera:camera withDuration:duration animationTimingFunction:function edgePadding:NSEdgeInsetsZero completionHandler:completion]; } - (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function edgePadding:(NSEdgeInsets)edgePadding completionHandler:(nullable void (^)(void))completion { + edgePadding = MGLEdgeInsetsInsetEdgeInset(edgePadding, self.contentInsets); mbgl::AnimationOptions animationOptions; if (duration > 0) { animationOptions.duration.emplace(MGLDurationFromTimeInterval(duration)); |