summaryrefslogtreecommitdiff
path: root/platform/darwin/src/NSValue+MGLAdditions.m
blob: b32445dab7df339e65ac9c9892cd92ec9d3e1d3d (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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#import "NSValue+MGLAdditions.h"

@implementation NSValue (MGLAdditions)

#pragma mark Geometry

+ (instancetype)valueWithMGLCoordinate:(CLLocationCoordinate2D)coordinate {
    return [self valueWithBytes:&coordinate objCType:@encode(CLLocationCoordinate2D)];
}

- (CLLocationCoordinate2D)MGLCoordinateValue {
    CLLocationCoordinate2D coordinate;
    [self getValue:&coordinate];
    return coordinate;
}

+ (instancetype)valueWithMGLMapPoint:(MGLMapPoint)point {
    return [self valueWithBytes:&point objCType:@encode(MGLMapPoint)];
}

-(MGLMapPoint) MGLMapPointValue {
    MGLMapPoint point;
    [self getValue:&point];
    return point;
}

+ (instancetype)valueWithMGLCoordinateSpan:(MGLCoordinateSpan)span {
    return [self valueWithBytes:&span objCType:@encode(MGLCoordinateSpan)];
}

- (MGLCoordinateSpan)MGLCoordinateSpanValue {
    MGLCoordinateSpan span;
    [self getValue:&span];
    return span;
}

+ (instancetype)valueWithMGLCoordinateBounds:(MGLCoordinateBounds)bounds {
    return [self valueWithBytes:&bounds objCType:@encode(MGLCoordinateBounds)];
}

- (MGLCoordinateBounds)MGLCoordinateBoundsValue {
    MGLCoordinateBounds bounds;
    [self getValue:&bounds];
    return bounds;
}

+ (instancetype)valueWithMGLCoordinateQuad:(MGLCoordinateQuad)quad {
    return [self valueWithBytes:&quad objCType:@encode(MGLCoordinateQuad)];
}

- (MGLCoordinateQuad)MGLCoordinateQuadValue {
    MGLCoordinateQuad quad;
    [self getValue:&quad];
    return quad;
}

#pragma mark Offline maps

+ (NSValue *)valueWithMGLOfflinePackProgress:(MGLOfflinePackProgress)progress {
    return [NSValue value:&progress withObjCType:@encode(MGLOfflinePackProgress)];
}

- (MGLOfflinePackProgress)MGLOfflinePackProgressValue {
    MGLOfflinePackProgress progress;
    [self getValue:&progress];
    return progress;
}

#pragma mark Working with Transition Values

+ (NSValue *)valueWithMGLTransition:(MGLTransition)transition; {
    return [NSValue value:&transition withObjCType:@encode(MGLTransition)];
}

- (MGLTransition)MGLTransitionValue {
    MGLTransition transition;
    [self getValue:&transition];
    return transition;
}

+ (NSValue *)valueWithMGLSphericalPosition:(MGLSphericalPosition)lightPosition
{
    return [NSValue value:&lightPosition withObjCType:@encode(MGLSphericalPosition)];
}

- (MGLSphericalPosition)MGLSphericalPositionValue
{
    MGLSphericalPosition lightPosition;
    [self getValue:&lightPosition];
    return lightPosition;
}

+ (NSValue *)valueWithMGLLightAnchor:(MGLLightAnchor)lightAnchor {
    return [NSValue value:&lightAnchor withObjCType:@encode(MGLLightAnchor)];
}

- (MGLLightAnchor)MGLLightAnchorValue
{
    MGLLightAnchor achorType;
    [self getValue:&achorType];
    return achorType;
}

@end