diff options
author | Fabian Guerra Soto <fabian.guerra@mapbox.com> | 2017-03-03 20:11:06 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-03 20:11:06 -0500 |
commit | 1f1cc131ea869eae57209bcc6ba74ddb3af14579 (patch) | |
tree | ca72da32853c0fe50271c15f442edf8cbcf0c3b3 /platform/darwin/src | |
parent | 8f892757b5c644986a68133c96684393df800670 (diff) | |
download | qtlocation-mapboxgl-1f1cc131ea869eae57209bcc6ba74ddb3af14579.tar.gz |
[ios] Fixed conversion between Duration and NSTimeInerval (#8276)
Diffstat (limited to 'platform/darwin/src')
-rw-r--r-- | platform/darwin/src/MGLStyle.mm | 10 | ||||
-rw-r--r-- | platform/darwin/src/NSDate+MGLAdditions.h | 12 | ||||
-rw-r--r-- | platform/darwin/src/NSDate+MGLAdditions.mm | 13 |
3 files changed, 19 insertions, 16 deletions
diff --git a/platform/darwin/src/MGLStyle.mm b/platform/darwin/src/MGLStyle.mm index bcb8100800..be82e34cb4 100644 --- a/platform/darwin/src/MGLStyle.mm +++ b/platform/darwin/src/MGLStyle.mm @@ -502,7 +502,7 @@ static NSURL *MGLStyleURL_emerald; newAppliedClasses.push_back([appliedClass UTF8String]); } - mbgl::style::TransitionOptions transition { { MGLDurationInSecondsFromTimeInterval(transitionDuration) } }; + mbgl::style::TransitionOptions transition { { MGLDurationFromTimeInterval(transitionDuration) } }; self.mapView.mbglMap->setTransitionOptions(transition); self.mapView.mbglMap->setClasses(newAppliedClasses); } @@ -575,27 +575,27 @@ static NSURL *MGLStyleURL_emerald; - (void)setTransitionDuration:(NSTimeInterval)duration { auto transitionOptions = self.mapView.mbglMap->getTransitionOptions(); - transitionOptions.duration = MGLDurationInSecondsFromTimeInterval(duration); + transitionOptions.duration = MGLDurationFromTimeInterval(duration); self.mapView.mbglMap->setTransitionOptions(transitionOptions); } - (NSTimeInterval)transitionDuration { const mbgl::style::TransitionOptions transitionOptions = self.mapView.mbglMap->getTransitionOptions(); - return MGLTimeIntervalFromDurationInSeconds(transitionOptions.duration.value_or(mbgl::Duration::zero())); + return MGLTimeIntervalFromDuration(transitionOptions.duration.value_or(mbgl::Duration::zero())); } - (void)setTransitionDelay:(NSTimeInterval)delay { auto transitionOptions = self.mapView.mbglMap->getTransitionOptions(); - transitionOptions.delay = MGLDurationInSecondsFromTimeInterval(delay); + transitionOptions.delay = MGLDurationFromTimeInterval(delay); self.mapView.mbglMap->setTransitionOptions(transitionOptions); } - (NSTimeInterval)transitionDelay { const mbgl::style::TransitionOptions transitionOptions = self.mapView.mbglMap->getTransitionOptions(); - return MGLTimeIntervalFromDurationInSeconds(transitionOptions.delay.value_or(mbgl::Duration::zero())); + return MGLTimeIntervalFromDuration(transitionOptions.delay.value_or(mbgl::Duration::zero())); } - (NSString *)description diff --git a/platform/darwin/src/NSDate+MGLAdditions.h b/platform/darwin/src/NSDate+MGLAdditions.h index 820d1bd9e2..1da03fda62 100644 --- a/platform/darwin/src/NSDate+MGLAdditions.h +++ b/platform/darwin/src/NSDate+MGLAdditions.h @@ -1,13 +1,17 @@ #import <Foundation/Foundation.h> +#import "MGLFoundation.h" #include <mbgl/util/chrono.hpp> -@interface NSDate (MGLAdditions) +NS_ASSUME_NONNULL_BEGIN + /// Converts from a duration in seconds to a duration object usable in mbgl. -mbgl::Duration MGLDurationInSecondsFromTimeInterval(NSTimeInterval duration); +MGL_EXPORT +mbgl::Duration MGLDurationFromTimeInterval(NSTimeInterval duration); /// Converts from an mbgl duration object to a duration in seconds. -NSTimeInterval MGLTimeIntervalFromDurationInSeconds(mbgl::Duration duration); +MGL_EXPORT +NSTimeInterval MGLTimeIntervalFromDuration(mbgl::Duration duration); -@end +NS_ASSUME_NONNULL_END diff --git a/platform/darwin/src/NSDate+MGLAdditions.mm b/platform/darwin/src/NSDate+MGLAdditions.mm index deac3c4881..1739805e7c 100644 --- a/platform/darwin/src/NSDate+MGLAdditions.mm +++ b/platform/darwin/src/NSDate+MGLAdditions.mm @@ -1,15 +1,14 @@ #import "NSDate+MGLAdditions.h" -@implementation NSDate (MGLAdditions) - -mbgl::Duration MGLDurationInSecondsFromTimeInterval(NSTimeInterval duration) +mbgl::Duration MGLDurationFromTimeInterval(NSTimeInterval duration) { return std::chrono::duration_cast<mbgl::Duration>(std::chrono::duration<NSTimeInterval>(duration)); } -NSTimeInterval MGLTimeIntervalFromDurationInSeconds(mbgl::Duration duration) +NSTimeInterval MGLTimeIntervalFromDuration(mbgl::Duration duration) { - return duration.count(); + std::chrono::nanoseconds nano(duration.count()); + std::chrono::seconds sec = std::chrono::duration_cast<std::chrono::seconds>(nano); + + return sec.count(); } - -@end |