From a2029413605c5923a02c3f18b52b4d6b55fb3194 Mon Sep 17 00:00:00 2001 From: Fredrik Karlsson Date: Thu, 18 Aug 2016 10:51:24 +0200 Subject: [ios, macos] reuse utility function --- platform/darwin/src/MGLStyle.mm | 19 ++++++++++--------- platform/darwin/src/NSDate+MGLAdditions.h | 11 +++++++++++ platform/darwin/src/NSDate+MGLAdditions.mm | 10 ++++++++++ 3 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 platform/darwin/src/NSDate+MGLAdditions.h create mode 100644 platform/darwin/src/NSDate+MGLAdditions.mm (limited to 'platform/darwin') 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(source)) { + if (source->is()) { return MGLVectorSource.class; - } else if (dynamic_cast(source)) { + } else if (source->is()) { return MGLGeoJSONSource.class; - } else if (dynamic_cast(source)) { + } else if (source->is()) { return MGLRasterSource.class; } @@ -185,13 +187,12 @@ static NSURL *MGLStyleURL_emerald; - (NS_ARRAY_OF(NSString *) *)styleClasses { - NSMutableArray *returnArray = [NSMutableArray array]; - const std::vector &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 + +#include +#include + +@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(std::chrono::duration(duration)); +} + +@end -- cgit v1.2.1