summaryrefslogtreecommitdiff
path: root/platform/darwin/src/MGLForegroundStyleLayer.mm
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2017-04-03 14:25:37 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2017-04-13 10:33:18 -0700
commitde6c9b35f35f6ec0950529261b207d716c046beb (patch)
treef022e3e09b4f8ffbe7646341f91aa76b8081ff62 /platform/darwin/src/MGLForegroundStyleLayer.mm
parent98d005792b68d0b299f123c1d31e50c72ba91ba8 (diff)
downloadqtlocation-mapboxgl-de6c9b35f35f6ec0950529261b207d716c046beb.tar.gz
[darwin] Simplify MGLStyleLayer initialization and pointer management
Similarly to the previous commit, introduce `-[MGLStyleLayer initWithPendingLayer:]`, allowing the base class to track the owned `_pendingSource` pointer and implement `-addToMapView:` and `-removeFromMapView:` without any casts. Fixes an issue where `-[MGLStyle layerFromMBGLLayer:]` would wind up creating layers whose `_rawLayer` and `_pendingLayer` held different values.
Diffstat (limited to 'platform/darwin/src/MGLForegroundStyleLayer.mm')
-rw-r--r--platform/darwin/src/MGLForegroundStyleLayer.mm29
1 files changed, 29 insertions, 0 deletions
diff --git a/platform/darwin/src/MGLForegroundStyleLayer.mm b/platform/darwin/src/MGLForegroundStyleLayer.mm
new file mode 100644
index 0000000000..6926dfac1f
--- /dev/null
+++ b/platform/darwin/src/MGLForegroundStyleLayer.mm
@@ -0,0 +1,29 @@
+#import "MGLForegroundStyleLayer.h"
+#import "MGLForegroundStyleLayer_Private.h"
+#import "MGLStyleLayer_Private.h"
+#import "MGLSource.h"
+
+@implementation MGLForegroundStyleLayer
+
+- (instancetype)initWithRawLayer:(mbgl::style::Layer *)rawLayer source:(MGLSource *)source {
+ if (self = [super initWithRawLayer:rawLayer]) {
+ _sourceIdentifier = source.identifier;
+ }
+ return self;
+}
+
+- (instancetype)initWithPendingLayer:(std::unique_ptr<mbgl::style::Layer>)pendingLayer source:(MGLSource *)source {
+ if (self = [super initWithPendingLayer:std::move(pendingLayer)]) {
+ _sourceIdentifier = source.identifier;
+ }
+ return self;
+}
+
+- (NSString *)description {
+ return [NSString stringWithFormat:
+ @"<%@: %p; identifier = %@; sourceIdentifier = %@; visible = %@>",
+ NSStringFromClass([self class]), (void *)self, self.identifier,
+ self.sourceIdentifier, self.visible ? @"YES" : @"NO"];
+}
+
+@end