diff options
author | Fredrik Karlsson <bjorn.fredrik.karlsson@gmail.com> | 2016-08-18 10:51:24 +0200 |
---|---|---|
committer | Fredrik Karlsson <bjorn.fredrik.karlsson@gmail.com> | 2016-08-18 14:26:05 +0200 |
commit | a2029413605c5923a02c3f18b52b4d6b55fb3194 (patch) | |
tree | 9aac3441d47a6c7fcded0eef7255773e2a667fa3 /platform/darwin | |
parent | f7069523b4b137eb6dfb965eca82d39b46841b15 (diff) | |
download | qtlocation-mapboxgl-a2029413605c5923a02c3f18b52b4d6b55fb3194.tar.gz |
[ios, macos] reuse utility function
Diffstat (limited to 'platform/darwin')
-rw-r--r-- | platform/darwin/src/MGLStyle.mm | 19 | ||||
-rw-r--r-- | platform/darwin/src/NSDate+MGLAdditions.h | 11 | ||||
-rw-r--r-- | platform/darwin/src/NSDate+MGLAdditions.mm | 10 |
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 |