diff --git a/platform/macos/app/Assets.xcassets/Layers/Contents.json b/platform/macos/app/Assets.xcassets/Layers/Contents.json
new file mode 100644
index 000000000..da4a164c9
--- /dev/null
+++ b/platform/macos/app/Assets.xcassets/Layers/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json
new file mode 100644
index 000000000..3d2c87887
--- /dev/null
+++ b/platform/macos/app/Assets.xcassets/Layers/background.imageset/Contents.json
@@ -0,0 +1,15 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "background.pdf"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ },
+ "properties" : {
+ "template-rendering-intent" : "template"
+ }
+}
\ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf b/platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf
new file mode 100644
index 000000000..95a50c144
--- /dev/null
+++ b/platform/macos/app/Assets.xcassets/Layers/background.imageset/background.pdf
@@ -0,0 +1,69 @@
+%PDF-1.5
+%µí®û
+3 0 obj
+<< /Length 4 0 R
+ /Filter /FlateDecode
+>>
+stream
+xœ}’Mjä@…÷u
+] š*Iõ£²H²f1x Ü‹�E®?OÕ¶»
ChÚÖgÕ“T’>R¦ø½ü¤2½}¦Ìƒ¾ðõÿ÷ôë7eÎô7=Ñ•yø!^Epp¹$aŽCÏ«QeíÏQŽav²�ç¶ÑJ$”Œ‡6r–ÁåÎ\ú+•Â6"¨”uTÓÍw…tÈ‚›Ü„•³Cpo»ðz¥çôßÛ>(«�ò@˜\QÖ@¸©Xx¼êÉ^‚¼o´ú娷6ÇÇf5ÂÙ8ÙKP³�Öè::�Û¨±ëî™v:DmæØEÎæQuÜ/³zÙ\'øæ²ÂÞ;*Uæ‚2.‹Þ»2Uõp!ν5D>Ðè¨!²§éPäVà’QNvŒ×kßh�ü¥K¨:†W”E¯¾t1^�9du.!ÔY•Æ
c¹:OðÝxñ®>„ò1`,iÛìDææÓi(ý1ä^mÇcÆÀ 3Ìʸ`Ã#(vçK ”Wt/ÞÐ�"³¥5íÎI7ag+vúܧXð1£ïsÖƒÒ!�ë?§°Ä8
+endstream
+endobj
+4 0 obj
+ 424
+endobj
+2 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+5 0 obj
+<< /Type /Page
+ /Parent 1 0 R
+ /MediaBox [ 0 0 12.8 12.8 ]
+ /Contents 3 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 2 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 5 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Creator (cairo 1.14.0 (http://cairographics.org))
+ /Producer (cairo 1.14.0 (http://cairographics.org))
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000826 00000 n
+0000000538 00000 n
+0000000015 00000 n
+0000000516 00000 n
+0000000610 00000 n
+0000000891 00000 n
+0000001018 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1070
+%%EOF
diff --git a/platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json
new file mode 100644
index 000000000..c924214fd
--- /dev/null
+++ b/platform/macos/app/Assets.xcassets/Layers/circle.imageset/Contents.json
@@ -0,0 +1,15 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "circle.pdf"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ },
+ "properties" : {
+ "template-rendering-intent" : "template"
+ }
+}
\ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf b/platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf
new file mode 100644
index 000000000..fde79a19b
--- /dev/null
+++ b/platform/macos/app/Assets.xcassets/Layers/circle.imageset/circle.pdf
@@ -0,0 +1,70 @@
+%PDF-1.5
+%µí®û
+3 0 obj
+<< /Length 4 0 R
+ /Filter /FlateDecode
+>>
+stream
+xœ]ŽM
+1…÷9Å»€1�?''£ËaRAf1¸ðú¦ÓX)ÍëGÞKº� �Ëû›àñ¦ÀAõ Š�µNv_4NÜ©ÁšØ% ÷ˆ3™Z
+×Úc†£r'•×ÂáQ›¶J2’ûWp{tÊî\ûù‹džIå†mÜóÿÃW4Ðè4J
+endstream
+endobj
+4 0 obj
+ 139
+endobj
+2 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+5 0 obj
+<< /Type /Page
+ /Parent 1 0 R
+ /MediaBox [ 0 0 12.8 12.8 ]
+ /Contents 3 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 2 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 5 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Creator (cairo 1.14.0 (http://cairographics.org))
+ /Producer (cairo 1.14.0 (http://cairographics.org))
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000541 00000 n
+0000000253 00000 n
+0000000015 00000 n
+0000000231 00000 n
+0000000325 00000 n
+0000000606 00000 n
+0000000733 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+785
+%%EOF
diff --git a/platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json
new file mode 100644
index 000000000..ea68330e7
--- /dev/null
+++ b/platform/macos/app/Assets.xcassets/Layers/fill.imageset/Contents.json
@@ -0,0 +1,15 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "fill.pdf"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ },
+ "properties" : {
+ "template-rendering-intent" : "template"
+ }
+}
\ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf b/platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf
new file mode 100644
index 000000000..ca7e4cc50
Binary files /dev/null and b/platform/macos/app/Assets.xcassets/Layers/fill.imageset/fill.pdf differ
diff --git a/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json b/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json
new file mode 100644
index 000000000..ad4293958
--- /dev/null
+++ b/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/Contents.json
@@ -0,0 +1,15 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "symbol.pdf"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ },
+ "properties" : {
+ "template-rendering-intent" : "template"
+ }
+}
\ No newline at end of file
diff --git a/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf b/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf
new file mode 100644
index 000000000..ce4aaa198
--- /dev/null
+++ b/platform/macos/app/Assets.xcassets/Layers/symbol.imageset/symbol.pdf
@@ -0,0 +1,71 @@
+%PDF-1.5
+%µí®û
+3 0 obj
+<< /Length 4 0 R
+ /Filter /FlateDecode
+>>
+stream
+xœ]ŽA
+Â@E÷9Å¿€q’IgÒ‚‹êR\ÈŠÐEqáõíØqQ !ÿ…üð'
+¨uÜa{
¸¿HXRLQñ&Á~î'�/p#ÃäëØÔ!ÊŽ2’6ëaìæÑ0s—‰cïõR¥_CY£r씪KÝþ•FÊ–ó¼·9Oç¿×‹.pN’- ¨yVñ
+ÿyOh ¢4
+endstream
+endobj
+4 0 obj
+ 152
+endobj
+2 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+5 0 obj
+<< /Type /Page
+ /Parent 1 0 R
+ /MediaBox [ 0 0 12.8 12.8 ]
+ /Contents 3 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 2 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 5 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Creator (cairo 1.14.0 (http://cairographics.org))
+ /Producer (cairo 1.14.0 (http://cairographics.org))
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000554 00000 n
+0000000266 00000 n
+0000000015 00000 n
+0000000244 00000 n
+0000000338 00000 n
+0000000619 00000 n
+0000000746 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+798
+%%EOF
diff --git a/platform/macos/app/Base.lproj/MainMenu.xib b/platform/macos/app/Base.lproj/MainMenu.xib
index 7dd4d0843..4efb8d4c4 100644
--- a/platform/macos/app/Base.lproj/MainMenu.xib
+++ b/platform/macos/app/Base.lproj/MainMenu.xib
@@ -429,6 +429,11 @@
+
diff --git a/platform/macos/app/Base.lproj/MapDocument.xib b/platform/macos/app/Base.lproj/MapDocument.xib
index 4e58490e6..9af40d461 100644
--- a/platform/macos/app/Base.lproj/MapDocument.xib
+++ b/platform/macos/app/Base.lproj/MapDocument.xib
@@ -1,40 +1,160 @@
-
+
-
+
+
+
+
+
+
+ style
+
+
+
+
+
+
+
+ layers
+
+
+
+
+
+
+
+ identifier
+ visible
+
+
+
+
+
-
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ StyleLayerIconTransformer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NSNegateBoolean
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
-
+
-
-
-
-
+
+
+
+
@@ -89,8 +209,25 @@
+
+
+
+
+
+
+
+
+
+
@@ -135,8 +272,30 @@
+
+
+
diff --git a/platform/macos/app/MapDocument.m b/platform/macos/app/MapDocument.m
index f9477206a..e312eccca 100644
--- a/platform/macos/app/MapDocument.m
+++ b/platform/macos/app/MapDocument.m
@@ -46,9 +46,12 @@ NS_ARRAY_OF(id ) *MBXFlattenedShapes(NS_ARRAY_OF(id
+@interface MapDocument ()
+@property (weak) IBOutlet NSArrayController *styleLayersArrayController;
+@property (weak) IBOutlet NSTableView *styleLayersTableView;
@property (weak) IBOutlet NSMenu *mapViewContextMenu;
+@property (weak) IBOutlet NSSplitView *splitView;
@end
@@ -98,6 +101,8 @@ NS_ARRAY_OF(id ) *MBXFlattenedShapes(NS_ARRAY_OF(id ) *MBXFlattenedShapes(NS_ARRAY_OF(id ) *MBXFlattenedShapes(NS_ARRAY_OF(id ) *MBXFlattenedShapes(NS_ARRAY_OF(id = 0 && ![indices containsIndex:clickedRow]) {
+ indices = [NSIndexSet indexSetWithIndex:clickedRow];
+ }
+ [self toggleStyleLayersAtArrangedObjectIndexes:indices];
+}
+
+- (void)toggleStyleLayersAtArrangedObjectIndexes:(NSIndexSet *)indices {
+ NS_ARRAY_OF(MGLStyleLayer *) *layers = [self.mapView.style.layers objectsAtIndexes:indices];
+ BOOL isVisible = layers.firstObject.visible;
+ [self.undoManager registerUndoWithTarget:self handler:^(MapDocument * _Nonnull target) {
+ [target toggleStyleLayersAtArrangedObjectIndexes:indices];
+ }];
+
+ if (!self.undoManager.undoing) {
+ NSString *actionName;
+ if (indices.count == 1) {
+ actionName = [NSString stringWithFormat:@"%@ Layer “%@�", isVisible ? @"Hide" : @"Show", layers.firstObject.identifier];
+ } else {
+ actionName = [NSString stringWithFormat:@"%@ %@ Layers", isVisible ? @"Hide" : @"Show",
+ [NSNumberFormatter localizedStringFromNumber:@(indices.count)
+ numberStyle:NSNumberFormatterDecimalStyle]];
+ }
+ [self.undoManager setActionIsDiscardable:YES];
+ [self.undoManager setActionName:actionName];
+ }
+
+ for (MGLStyleLayer *layer in layers) {
+ layer.visible = !isVisible;
+ }
+
+ NSIndexSet *columnIndices = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 2)];
+ [self.styleLayersTableView reloadDataForRowIndexes:indices columnIndexes:columnIndices];
+}
+
+- (IBAction)deleteStyleLayers:(id)sender {
+ NSInteger clickedRow = self.styleLayersTableView.clickedRow;
+ NSIndexSet *indices = self.styleLayersTableView.selectedRowIndexes;
+ if (clickedRow >= 0 && ![indices containsIndex:clickedRow]) {
+ indices = [NSIndexSet indexSetWithIndex:clickedRow];
+ }
+ [self deleteStyleLayersAtArrangedObjectIndexes:indices];
+}
+
+- (void)insertStyleLayers:(NS_ARRAY_OF(MGLStyleLayer *) *)layers atArrangedObjectIndexes:(NSIndexSet *)indices {
+ [self.undoManager registerUndoWithTarget:self handler:^(id _Nonnull target) {
+ [self deleteStyleLayersAtArrangedObjectIndexes:indices];
+ }];
+
+ if (!self.undoManager.undoing) {
+ NSString *actionName;
+ if (indices.count == 1) {
+ actionName = [NSString stringWithFormat:@"Add Layer “%@�", layers.firstObject.identifier];
+ } else {
+ actionName = [NSString stringWithFormat:@"Add %@ Layers",
+ [NSNumberFormatter localizedStringFromNumber:@(indices.count) numberStyle:NSNumberFormatterDecimalStyle]];
+ }
+ [self.undoManager setActionName:actionName];
+ }
+
+ [self.styleLayersArrayController insertObjects:layers atArrangedObjectIndexes:indices];
+}
+
+- (void)deleteStyleLayersAtArrangedObjectIndexes:(NSIndexSet *)indices {
+ NS_ARRAY_OF(MGLStyleLayer *) *layers = [self.mapView.style.layers objectsAtIndexes:indices];
+ [self.undoManager registerUndoWithTarget:self handler:^(id _Nonnull target) {
+ [self insertStyleLayers:layers atArrangedObjectIndexes:indices];
+ }];
+
+ if (!self.undoManager.undoing) {
+ NSString *actionName;
+ if (indices.count == 1) {
+ actionName = [NSString stringWithFormat:@"Delete Layer “%@�", layers.firstObject.identifier];
+ } else {
+ actionName = [NSString stringWithFormat:@"Delete %@ Layers",
+ [NSNumberFormatter localizedStringFromNumber:@(indices.count) numberStyle:NSNumberFormatterDecimalStyle]];
+ }
+ [self.undoManager setActionName:actionName];
+ }
+
+ [self.styleLayersArrayController removeObjectsAtArrangedObjectIndexes:indices];
+}
+
- (void)applyPendingState {
if (_inheritedStyleURL) {
self.mapView.styleURL = _inheritedStyleURL;
@@ -607,6 +715,27 @@ NS_ARRAY_OF(id ) *MBXFlattenedShapes(NS_ARRAY_OF(id = 0 || self.styleLayersTableView.selectedRow >= 0;
+ }
if (menuItem.action == @selector(manipulateStyle:)) {
return YES;
}
@@ -722,7 +851,8 @@ NS_ARRAY_OF(id ) *MBXFlattenedShapes(NS_ARRAY_OF(id ) *MBXFlattenedShapes(NS_ARRAY_OF(id ) *MBXFlattenedShapes(NS_ARRAY_OF(id ) *MBXFlattenedShapes(NS_ARRAY_OF(id )annotation {
diff --git a/platform/macos/app/StyleLayerIconTransformer.h b/platform/macos/app/StyleLayerIconTransformer.h
new file mode 100644
index 000000000..1af1d512d
--- /dev/null
+++ b/platform/macos/app/StyleLayerIconTransformer.h
@@ -0,0 +1,5 @@
+#import
+
+@interface StyleLayerIconTransformer : NSValueTransformer
+
+@end
diff --git a/platform/macos/app/StyleLayerIconTransformer.m b/platform/macos/app/StyleLayerIconTransformer.m
new file mode 100644
index 000000000..93f59abb3
--- /dev/null
+++ b/platform/macos/app/StyleLayerIconTransformer.m
@@ -0,0 +1,38 @@
+#import "StyleLayerIconTransformer.h"
+
+#import
+
+@implementation StyleLayerIconTransformer
+
++ (Class)transformedValueClass {
+ return [NSString class];
+}
+
++ (BOOL)allowsReverseTransformation {
+ return NO;
+}
+
+- (id)transformedValue:(MGLStyleLayer *)layer {
+ if ([layer isKindOfClass:[MGLBackgroundStyleLayer class]]) {
+ return [NSImage imageNamed:@"background"];
+ }
+ if ([layer isKindOfClass:[MGLCircleStyleLayer class]]) {
+ return [NSImage imageNamed:@"circle"];
+ }
+ if ([layer isKindOfClass:[MGLFillStyleLayer class]]) {
+ return [NSImage imageNamed:@"fill"];
+ }
+ if ([layer isKindOfClass:[MGLLineStyleLayer class]]) {
+ return [NSImage imageNamed:@"NSListViewTemplate"];
+ }
+ if ([layer isKindOfClass:[MGLRasterStyleLayer class]]) {
+ return [[NSWorkspace sharedWorkspace] iconForFileType:@"jpg"];
+ }
+ if ([layer isKindOfClass:[MGLSymbolStyleLayer class]]) {
+ return [NSImage imageNamed:@"symbol"];
+ }
+
+ return nil;
+}
+
+@end
diff --git a/platform/macos/app/resources/background.svg b/platform/macos/app/resources/background.svg
new file mode 100644
index 000000000..39451e8b1
--- /dev/null
+++ b/platform/macos/app/resources/background.svg
@@ -0,0 +1,90 @@
+
+
+
+
diff --git a/platform/macos/app/resources/circle.svg b/platform/macos/app/resources/circle.svg
new file mode 100644
index 000000000..91e0b1199
--- /dev/null
+++ b/platform/macos/app/resources/circle.svg
@@ -0,0 +1,67 @@
+
+
+
+
diff --git a/platform/macos/app/resources/fill.svg b/platform/macos/app/resources/fill.svg
new file mode 100644
index 000000000..7860a5fdd
--- /dev/null
+++ b/platform/macos/app/resources/fill.svg
@@ -0,0 +1,68 @@
+
+
+
+
diff --git a/platform/macos/app/resources/symbol.svg b/platform/macos/app/resources/symbol.svg
new file mode 100644
index 000000000..68847cb50
--- /dev/null
+++ b/platform/macos/app/resources/symbol.svg
@@ -0,0 +1,66 @@
+
+
+
+
diff --git a/platform/macos/macos.xcodeproj/project.pbxproj b/platform/macos/macos.xcodeproj/project.pbxproj
index 3ab9d4d9c..0c28691cb 100644
--- a/platform/macos/macos.xcodeproj/project.pbxproj
+++ b/platform/macos/macos.xcodeproj/project.pbxproj
@@ -115,6 +115,7 @@
DA8F259C1D51CB000010E6B5 /* MGLStyleValue_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8F259B1D51CB000010E6B5 /* MGLStyleValue_Private.h */; };
DA8F25B21D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8F25A61D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.h */; };
DA8F25B31D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8F25A71D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.mm */; };
+ DAA48EFD1D6A4731006A7E36 /* StyleLayerIconTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = DAA48EFC1D6A4731006A7E36 /* StyleLayerIconTransformer.m */; };
DAC2ABC51CC6D343006D18C4 /* MGLAnnotationImage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC2ABC41CC6D343006D18C4 /* MGLAnnotationImage_Private.h */; };
DACC22141CF3D3E200D220D9 /* MGLFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = DACC22121CF3D3E200D220D9 /* MGLFeature.h */; settings = {ATTRIBUTES = (Public, ); }; };
DACC22151CF3D3E200D220D9 /* MGLFeature.mm in Sources */ = {isa = PBXBuildFile; fileRef = DACC22131CF3D3E200D220D9 /* MGLFeature.mm */; };
@@ -356,6 +357,8 @@
DA8F25B51D51D2240010E6B5 /* MGLRuntimeStylingTests.m.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; path = MGLRuntimeStylingTests.m.ejs; sourceTree = ""; };
DA8F25B61D51D2240010E6B5 /* MGLStyleLayer.h.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; path = MGLStyleLayer.h.ejs; sourceTree = ""; };
DA8F25B71D51D2240010E6B5 /* MGLStyleLayer.mm.ejs */ = {isa = PBXFileReference; lastKnownFileType = text; path = MGLStyleLayer.mm.ejs; sourceTree = ""; };
+ DAA48EFB1D6A4731006A7E36 /* StyleLayerIconTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleLayerIconTransformer.h; sourceTree = ""; };
+ DAA48EFC1D6A4731006A7E36 /* StyleLayerIconTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StyleLayerIconTransformer.m; sourceTree = ""; };
DAC2ABC41CC6D343006D18C4 /* MGLAnnotationImage_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationImage_Private.h; sourceTree = ""; };
DACC22121CF3D3E200D220D9 /* MGLFeature.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFeature.h; sourceTree = ""; };
DACC22131CF3D3E200D220D9 /* MGLFeature.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFeature.mm; sourceTree = ""; };
@@ -588,6 +591,8 @@
DA839E9E1CC2E3400062CAFB /* MapDocument.xib */,
DAE6C2E91CC3050F00DB3429 /* OfflinePackNameValueTransformer.h */,
DAE6C2EA1CC3050F00DB3429 /* OfflinePackNameValueTransformer.m */,
+ DAA48EFB1D6A4731006A7E36 /* StyleLayerIconTransformer.h */,
+ DAA48EFC1D6A4731006A7E36 /* StyleLayerIconTransformer.m */,
DAE6C2EB1CC3050F00DB3429 /* TimeIntervalTransformer.h */,
DAE6C2EC1CC3050F00DB3429 /* TimeIntervalTransformer.m */,
DA839EA11CC2E3400062CAFB /* Assets.xcassets */,
@@ -1156,6 +1161,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ DAA48EFD1D6A4731006A7E36 /* StyleLayerIconTransformer.m in Sources */,
DA839E9D1CC2E3400062CAFB /* MapDocument.m in Sources */,
DAE6C2ED1CC3050F00DB3429 /* DroppedPinAnnotation.m in Sources */,
DAE6C2EE1CC3050F00DB3429 /* LocationCoordinate2DTransformer.m in Sources */,