diff options
Diffstat (limited to 'platform/darwin')
-rw-r--r-- | platform/darwin/src/NSData+MGLAdditions.h | 15 | ||||
-rw-r--r-- | platform/darwin/src/NSData+MGLAdditions.mm | 23 |
2 files changed, 38 insertions, 0 deletions
diff --git a/platform/darwin/src/NSData+MGLAdditions.h b/platform/darwin/src/NSData+MGLAdditions.h new file mode 100644 index 0000000000..0c68c81f45 --- /dev/null +++ b/platform/darwin/src/NSData+MGLAdditions.h @@ -0,0 +1,15 @@ +#import <Foundation/Foundation.h> + +#import "MGLTypes.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface NSData (MGLAdditions) + +- (NSData *)mgl_compressedData; + +- (NSData *)mgl_decompressedData; + +@end + +NS_ASSUME_NONNULL_END diff --git a/platform/darwin/src/NSData+MGLAdditions.mm b/platform/darwin/src/NSData+MGLAdditions.mm new file mode 100644 index 0000000000..ef171c5e1e --- /dev/null +++ b/platform/darwin/src/NSData+MGLAdditions.mm @@ -0,0 +1,23 @@ +#import "NSData+MGLAdditions.h" + +#include <mbgl/util/compression.hpp> + +@implementation NSData (MGLAdditions) + +- (NSData *)mgl_compressedData +{ + std::string string(static_cast<const char*>(self.bytes), self.length); + std::string compressed_string = mbgl::util::compress(string); + + return [NSData dataWithBytes:&compressed_string[0] length:compressed_string.length()]; +} + +- (NSData *)mgl_decompressedData +{ + std::string string(static_cast<const char*>(self.bytes), self.length); + std::string decompressed_string = mbgl::util::decompress(string); + + return [NSData dataWithBytes:&decompressed_string[0] length:decompressed_string.length()]; +} + +@end |