From 21ce6fbdf96e80272fa0893640f7da85497aa9aa Mon Sep 17 00:00:00 2001 From: Jason Wray Date: Thu, 18 Feb 2016 17:28:04 -0500 Subject: [PATCH] [osx] Set default polyline and polygon color to the selected menu item color Fixes #3927 --- platform/osx/app/MainMenu.xib | 16 ++++++--- platform/osx/app/MapDocument.m | 44 ++++++++++++++++++++--- platform/osx/include/MGLMapViewDelegate.h | 8 ++--- platform/osx/src/MGLMapView.mm | 4 +-- 4 files changed, 56 insertions(+), 16 deletions(-) diff --git a/platform/osx/app/MainMenu.xib b/platform/osx/app/MainMenu.xib index 844af08f3..64ff4e550 100644 --- a/platform/osx/app/MainMenu.xib +++ b/platform/osx/app/MainMenu.xib @@ -1,7 +1,7 @@ - + - + @@ -473,10 +473,16 @@ - + - + + + + + + + @@ -545,7 +551,7 @@ - + diff --git a/platform/osx/app/MapDocument.m b/platform/osx/app/MapDocument.m index 6881f6bd5..7c42bc980 100644 --- a/platform/osx/app/MapDocument.m +++ b/platform/osx/app/MapDocument.m @@ -33,6 +33,7 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = { BOOL _showsToolTipsOnDroppedPins; BOOL _randomizesCursorsOnDroppedPins; BOOL _isTouringWorld; + BOOL _isShowingPolygonAndPolylineAnnotations; } #pragma mark Lifecycle @@ -241,7 +242,7 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = { } - (IBAction)dropManyPins:(id)sender { - [self.mapView removeAnnotations:self.mapView.annotations]; + [self removeAllAnnotations:sender]; NSRect bounds = self.mapView.bounds; NSMutableArray *annotations = [NSMutableArray array]; @@ -273,14 +274,15 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = { } } -- (IBAction)removeAllPins:(id)sender { +- (IBAction)removeAllAnnotations:(id)sender { [self.mapView removeAnnotations:self.mapView.annotations]; + _isShowingPolygonAndPolylineAnnotations = NO; } - (IBAction)startWorldTour:(id)sender { _isTouringWorld = YES; - [self removeAllPins:sender]; + [self removeAllAnnotations:sender]; NSUInteger numberOfAnnotations = sizeof(WorldTourDestinations) / sizeof(WorldTourDestinations[0]); NSMutableArray *annotations = [NSMutableArray arrayWithCapacity:numberOfAnnotations]; for (NSUInteger i = 0; i < numberOfAnnotations; i++) { @@ -319,6 +321,35 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = { self.mapView.camera = self.mapView.camera; } +- (IBAction)drawPolygonAndPolyLineAnnotations:(id)sender { + + if (_isShowingPolygonAndPolylineAnnotations) { + [self removeAllAnnotations:sender]; + return; + } + + _isShowingPolygonAndPolylineAnnotations = YES; + + // Pacific Northwest triangle + CLLocationCoordinate2D triangleCoordinates[3] = { + CLLocationCoordinate2DMake(44, -122), + CLLocationCoordinate2DMake(46, -122), + CLLocationCoordinate2DMake(46, -121) + }; + MGLPolygon *triangle = [MGLPolygon polygonWithCoordinates:triangleCoordinates count:3]; + [self.mapView addAnnotation:triangle]; + + // West coast line + CLLocationCoordinate2D lineCoordinates[4] = { + CLLocationCoordinate2DMake(47.6025, -122.3327), + CLLocationCoordinate2DMake(45.5189, -122.6726), + CLLocationCoordinate2DMake(37.7790, -122.4177), + CLLocationCoordinate2DMake(34.0532, -118.2349) + }; + MGLPolyline *line = [MGLPolyline polylineWithCoordinates:lineCoordinates count:4]; + [self.mapView addAnnotation:line]; +} + #pragma mark Help methods - (IBAction)giveFeedback:(id)sender { @@ -457,8 +488,8 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = { if (menuItem.action == @selector(dropManyPins:)) { return YES; } - if (menuItem.action == @selector(removeAllPins:)) { - return self.mapView.annotations.count; + if (menuItem.action == @selector(removeAllAnnotations:)) { + return self.mapView.annotations.count > 0; } if (menuItem.action == @selector(startWorldTour:)) { return !_isTouringWorld; @@ -466,6 +497,9 @@ static const CLLocationCoordinate2D WorldTourDestinations[] = { if (menuItem.action == @selector(stopWorldTour:)) { return _isTouringWorld; } + if (menuItem.action == @selector(drawPolygonAndPolyLineAnnotations:)) { + return !_isShowingPolygonAndPolylineAnnotations; + } if (menuItem.action == @selector(giveFeedback:)) { return YES; } diff --git a/platform/osx/include/MGLMapViewDelegate.h b/platform/osx/include/MGLMapViewDelegate.h index eece606c3..fcd013284 100644 --- a/platform/osx/include/MGLMapViewDelegate.h +++ b/platform/osx/include/MGLMapViewDelegate.h @@ -104,8 +104,8 @@ NS_ASSUME_NONNULL_BEGIN /** Returns the color to use when rendering the outline of a shape annotation. - The default stroke color is black. If a pattern color is specified, the - result is undefined. + The default stroke color is the selected menu item color. If a pattern + color is specified, the result is undefined. @param mapView The map view rendering the shape annotation. @param annotation The annotation being rendered. @@ -114,8 +114,8 @@ NS_ASSUME_NONNULL_BEGIN /** Returns the color to use when rendering the fill of a polygon annotation. - The default fill color is blue. If a pattern color is specified, the result - is undefined. + The default fill color is selected menu item color. If a pattern color + is specified, the result is undefined. @param mapView The map view rendering the polygon annotation. @param annotation The annotation being rendered. diff --git a/platform/osx/src/MGLMapView.mm b/platform/osx/src/MGLMapView.mm index de65e0496..ec3fb7eb3 100644 --- a/platform/osx/src/MGLMapView.mm +++ b/platform/osx/src/MGLMapView.mm @@ -1987,14 +1987,14 @@ public: - (mbgl::Color)strokeColorForShapeAnnotation:(MGLShape *)annotation { NSColor *color = (_delegateHasStrokeColorsForShapeAnnotations ? [self.delegate mapView:self strokeColorForShapeAnnotation:annotation] - : [NSColor blackColor]); + : [NSColor selectedMenuItemColor]); return MGLColorObjectFromNSColor(color); } - (mbgl::Color)fillColorForPolygonAnnotation:(MGLPolygon *)annotation { NSColor *color = (_delegateHasFillColorsForShapeAnnotations ? [self.delegate mapView:self fillColorForPolygonAnnotation:annotation] - : [NSColor blueColor]); + : [NSColor selectedMenuItemColor]); return MGLColorObjectFromNSColor(color); }