summaryrefslogtreecommitdiff
path: root/platform/ios/app/MBXState.m
blob: 0365306637ddfc94489e117fb0ebab46c5492597 (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
#import "MBXState.h"

NSString *const MBXCamera = @"MBXCamera";
NSString *const MBXUserTrackingMode = @"MBXUserTrackingMode";
NSString *const MBXShowsUserLocation = @"MBXShowsUserLocation";
NSString *const MBXDebugMaskValue = @"MBXDebugMaskValue";
NSString *const MBXShowsZoomLevelOrnament =  @"MBXShowsZoomLevelOrnament";
NSString *const MBXShowsTimeFrameGraph = @"MBXShowsFrameTimeGraph";
NSString *const MBXDebugLoggingEnabled = @"MGLMapboxMetricsDebugLoggingEnabled";
NSString *const MBXShowsMapScale = @"MBXMapShowsScale";
NSString *const MBXMapShowsHeadingIndicator = @"MBXMapShowsHeadingIndicator";
NSString *const MBXMapFramerateMeasurementEnabled = @"MBXMapFramerateMeasurementEnabled";
NSString *const MBXReuseQueueStatsEnabled = @"MBXReuseQueueStatsEnabled";

@interface MBXState()

@end

@implementation MBXState

- (void)encodeWithCoder:(NSCoder *)coder
{
    [coder encodeObject:_camera forKey:MBXCamera];
    [coder encodeObject:[NSNumber numberWithUnsignedInteger:_userTrackingMode] forKey:MBXUserTrackingMode];
    [coder encodeBool:_showsUserLocation forKey:MBXShowsUserLocation];
    [coder encodeObject:[NSNumber numberWithUnsignedInteger:_debugMask] forKey:MBXDebugMaskValue];
    [coder encodeBool:_showsZoomLevelOrnament forKey:MBXShowsZoomLevelOrnament];
    [coder encodeBool:_showsTimeFrameGraph forKey:MBXShowsTimeFrameGraph];
    [coder encodeBool:_debugLoggingEnabled forKey:MBXDebugLoggingEnabled];
    [coder encodeBool:_showsMapScale forKey:MBXShowsMapScale];
    [coder encodeBool:_showsUserHeadingIndicator forKey:MBXMapShowsHeadingIndicator];
    [coder encodeBool:_framerateMeasurementEnabled forKey:MBXMapFramerateMeasurementEnabled];
    [coder encodeBool:_reuseQueueStatsEnabled forKey:MBXReuseQueueStatsEnabled];
}

- (nullable instancetype)initWithCoder:(nonnull NSCoder *)decoder {
    if (self = [super init]) {
        MGLMapCamera *decodedCamera = [decoder decodeObjectForKey:MBXCamera];
        NSNumber *decodedUserTrackingMode = [decoder decodeObjectForKey:MBXUserTrackingMode];
        BOOL decodedShowsUserLocation = [decoder decodeBoolForKey:MBXShowsUserLocation];
        NSNumber *decodedDebugMaskOptions = [decoder decodeObjectForKey:MBXDebugMaskValue];
        BOOL decodedZoomLevelOrnament = [decoder decodeBoolForKey:MBXShowsZoomLevelOrnament];
        BOOL decodedShowsTimeFrameGraph = [decoder decodeBoolForKey:MBXShowsTimeFrameGraph];
        BOOL decodedDebugLoggingEnabled = [decoder decodeBoolForKey:MBXDebugLoggingEnabled];
        BOOL decodedShowsMapScale = [decoder decodeBoolForKey:MBXShowsMapScale];
        BOOL decodedShowsUserHeadingIndicator = [decoder decodeBoolForKey:MBXMapShowsHeadingIndicator];
        BOOL decodedFramerateMeasurementEnabled = [decoder decodeBoolForKey:MBXMapFramerateMeasurementEnabled];
        BOOL decodedReuseQueueStatsEnabled = [decoder decodeBoolForKey:MBXReuseQueueStatsEnabled];

        _camera = decodedCamera;
        _userTrackingMode = decodedUserTrackingMode.intValue;
        _showsUserLocation = decodedShowsUserLocation;
        _debugMask = decodedDebugMaskOptions.intValue;
        _showsZoomLevelOrnament = decodedZoomLevelOrnament;
        _showsTimeFrameGraph = decodedShowsTimeFrameGraph;
        _debugLoggingEnabled = decodedDebugLoggingEnabled;
        _showsMapScale = decodedShowsMapScale;
        _showsUserHeadingIndicator = decodedShowsUserHeadingIndicator;
        _framerateMeasurementEnabled = decodedFramerateMeasurementEnabled;
        _reuseQueueStatsEnabled = decodedReuseQueueStatsEnabled;
    }

    return self;
}

+ (BOOL)supportsSecureCoding {
    return YES;
}

- (NSString*) debugDescription {
    return [NSString stringWithFormat:@"Camera: %@\nTracking mode: %lu\nShows user location: %@\nDebug mask value: %lu\nShows zoom level ornament: %@\nShows time frame graph: %@\nDebug logging enabled: %@\nShows map scale: %@\nShows user heading indicator: %@\nFramerate measurement enabled: %@\nReuse queue stats enabled: %@",
            self.camera,
            (unsigned long)self.userTrackingMode,
            self.showsUserLocation ? @"YES" : @"NO",
            (unsigned long)self.debugMask,
            self.showsZoomLevelOrnament ? @"YES" : @"NO",
            self.showsTimeFrameGraph ? @"YES" : @"NO",
            self.debugLoggingEnabled ? @"YES" : @"NO",
            self.showsMapScale ? @"YES" : @"NO",
            self.showsUserHeadingIndicator ? @"YES" : @"NO",
            self.framerateMeasurementEnabled ? @"YES" : @"NO",
            self.reuseQueueStatsEnabled ? @"YES" : @"NO"];
}

@end