summaryrefslogtreecommitdiff
path: root/platform/darwin/src
diff options
context:
space:
mode:
authorFabian Guerra Soto <fabian.guerra@mapbox.com>2017-03-03 20:11:06 -0500
committerGitHub <noreply@github.com>2017-03-03 20:11:06 -0500
commit1f1cc131ea869eae57209bcc6ba74ddb3af14579 (patch)
treeca72da32853c0fe50271c15f442edf8cbcf0c3b3 /platform/darwin/src
parent8f892757b5c644986a68133c96684393df800670 (diff)
downloadqtlocation-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.mm10
-rw-r--r--platform/darwin/src/NSDate+MGLAdditions.h12
-rw-r--r--platform/darwin/src/NSDate+MGLAdditions.mm13
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