summaryrefslogtreecommitdiff
path: root/platform/darwin
diff options
context:
space:
mode:
authorFredrik Karlsson <bjorn.fredrik.karlsson@gmail.com>2016-08-18 10:51:24 +0200
committerFredrik Karlsson <bjorn.fredrik.karlsson@gmail.com>2016-08-18 14:26:05 +0200
commita2029413605c5923a02c3f18b52b4d6b55fb3194 (patch)
tree9aac3441d47a6c7fcded0eef7255773e2a667fa3 /platform/darwin
parentf7069523b4b137eb6dfb965eca82d39b46841b15 (diff)
downloadqtlocation-mapboxgl-a2029413605c5923a02c3f18b52b4d6b55fb3194.tar.gz
[ios, macos] reuse utility function
Diffstat (limited to 'platform/darwin')
-rw-r--r--platform/darwin/src/MGLStyle.mm19
-rw-r--r--platform/darwin/src/NSDate+MGLAdditions.h11
-rw-r--r--platform/darwin/src/NSDate+MGLAdditions.mm10
3 files changed, 31 insertions, 9 deletions
diff --git a/platform/darwin/src/MGLStyle.mm b/platform/darwin/src/MGLStyle.mm
index 8bc4018e73..7b6a36d834 100644
--- a/platform/darwin/src/MGLStyle.mm
+++ b/platform/darwin/src/MGLStyle.mm
@@ -13,6 +13,8 @@
#import "MGLStyleLayer_Private.h"
#import "MGLSource_Private.h"
+#import "NSDate+MGLAdditions.h"
+
#import "MGLSource.h"
#import "MGLVectorSource.h"
#import "MGLRasterSource.h"
@@ -125,11 +127,11 @@ static NSURL *MGLStyleURL_emerald;
- (Class)classFromSource:(mbgl::style::Source *)source
{
- if (dynamic_cast<mbgl::style::VectorSource *>(source)) {
+ if (source->is<mbgl::style::VectorSource>()) {
return MGLVectorSource.class;
- } else if (dynamic_cast<mbgl::style::GeoJSONSource *>(source)) {
+ } else if (source->is<mbgl::style::GeoJSONSource>()) {
return MGLGeoJSONSource.class;
- } else if (dynamic_cast<mbgl::style::RasterSource *>(source)) {
+ } else if (source->is<mbgl::style::RasterSource>()) {
return MGLRasterSource.class;
}
@@ -185,13 +187,12 @@ static NSURL *MGLStyleURL_emerald;
- (NS_ARRAY_OF(NSString *) *)styleClasses
{
- NSMutableArray *returnArray = [NSMutableArray array];
-
const std::vector<std::string> &appliedClasses = self.mapView.mbglMap->getClasses();
- for (auto class_it = appliedClasses.begin(); class_it != appliedClasses.end(); class_it++)
- {
- [returnArray addObject:@(class_it->c_str())];
+ NSMutableArray *returnArray = [NSMutableArray arrayWithCapacity:appliedClasses.size()];
+
+ for (auto appliedClass : appliedClasses) {
+ [returnArray addObject:@(appliedClass.c_str())];
}
return returnArray;
@@ -208,7 +209,7 @@ static NSURL *MGLStyleURL_emerald;
for (NSString *appliedClass in appliedClasses)
{
- newAppliedClasses.insert(newAppliedClasses.end(), [appliedClass UTF8String]);
+ newAppliedClasses.push_back([appliedClass UTF8String]);
}
mbgl::style::TransitionOptions transition { { MGLDurationInSeconds(transitionDuration) } };
diff --git a/platform/darwin/src/NSDate+MGLAdditions.h b/platform/darwin/src/NSDate+MGLAdditions.h
new file mode 100644
index 0000000000..a116ef32de
--- /dev/null
+++ b/platform/darwin/src/NSDate+MGLAdditions.h
@@ -0,0 +1,11 @@
+#import <Foundation/Foundation.h>
+
+#include <mbgl/mbgl.hpp>
+#include <mbgl/util/chrono.hpp>
+
+@interface NSDate (MGLAdditions)
+
+/// Converts from a duration in seconds to a duration object usable in mbgl.
+mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration);
+
+@end
diff --git a/platform/darwin/src/NSDate+MGLAdditions.mm b/platform/darwin/src/NSDate+MGLAdditions.mm
new file mode 100644
index 0000000000..75072ad7ff
--- /dev/null
+++ b/platform/darwin/src/NSDate+MGLAdditions.mm
@@ -0,0 +1,10 @@
+#import "NSDate+MGLAdditions.h"
+
+@implementation NSDate (MGLAdditions)
+
+mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
+{
+ return std::chrono::duration_cast<mbgl::Duration>(std::chrono::duration<NSTimeInterval>(duration));
+}
+
+@end