summaryrefslogtreecommitdiff
path: root/platform/darwin/src/NSArray+MGLStyleAttributeAdditions.mm
blob: 14560689380dd1990ea2f094646435812e9f9565 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#import "NSArray+MGLStyleAttributeAdditions.h"

#import "NSArray+MGLStyleAttributeAdditions_Private.h"
#import "MGLStyleAttributeValue_Private.h"

#include <array>

@interface  NSArray(Private) <MGLStyleAttributeValue_Private>
@end

@implementation NSArray (MGLStyleAttributeAdditions)

- (mbgl::style::PropertyValue<std::array<float, 2>>)mbgl_offsetPropertyValue
{
    NSAssert(self.count == 2, @"Offset must contain 2 values (dx, dy)");
    NSNumber *dx = self[0];
    NSNumber *dy = self[1];
    return {{dx.floatValue, dy.floatValue}};
}

- (mbgl::style::PropertyValue<std::array<float, 4> >)mbgl_paddingPropertyValue
{
    NSAssert(self.count == 4, @"Padding must contain 4 values (top, left, bottom & right)");
    NSNumber *top = self[0];
    NSNumber *left = self[1];
    NSNumber *bottom = self[2];
    NSNumber *right = self[3];
    return {{top.floatValue, left.floatValue, bottom.floatValue, right.floatValue}};
}

- (mbgl::style::PropertyValue<std::vector<std::string> >)mbgl_stringArrayPropertyValue
{
    std::vector<std::string>fonts;
    
    for (NSString *font in self) {
        fonts.emplace_back(font.UTF8String);
    }
    
    return {{fonts}};
}

- (mbgl::style::PropertyValue<std::vector<float> >)mbgl_numberArrayPropertyValue
{
    std::vector<float>values;
    
    for (NSNumber *n in self) {
        values.emplace_back(n.floatValue);
    }
    
    return {{values}};
}


@end