Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

OS X SDK and revamped OS X demo application #3135

Merged
merged 25 commits into from
Dec 14, 2015
Merged

OS X SDK and revamped OS X demo application #3135

merged 25 commits into from
Dec 14, 2015

Commits on Dec 14, 2015

  1. [osx] Rewrote platform-osx and osxapp

    platform-osx now vends a real NSView subclass, MGLMapView, that is readily embedded inside a Cocoa application for OS X. MGLMapView is backed by an NSOpenGLLayer for optimal performance and integration with other layer-backed views. It supports keyboard shortcuts and several gestures and hosts attribution, zooming, and rotation controls as subviews. osxapp is now a bona fide Cocoa application that embeds MGLMapView inside a XIB. osxapp has preferences and a share button for tight integration with custom styles.
    
    Enabling asynchronous rendering would be more consistent with iOS but increases CPU usage so much, even when idle, that it isn’t worth any performance gain. The bigger issue is that VAOs aren’t being used.
    
    make xpackage creates a static library similar to the one created by make ipackage. make clean cleans additional places where build output ends up.
    
    The OS X minimum deployment target has been increased from 10.9 to 10.10. osxapp’s window has a full size content view, which requires 10.10. Lightweight generics require iOS 9+ and OS X 10.11 regardless, because it was only in that release that Foundation collection classes started adopting lightweight generics.
    
    Shuffled files around and refactored annotations so that iOS and OS X share a good chunk of the annotations code, which now takes advantage of polymorphism. MGLMapView can now display annotations but cannot yet select them. In osxapp, a long press drops a pin, and so does the map view’s context menu.
    
    Annotations have NSPopovers as callouts, and their view controllers can be customized. Annotation image alignment rects are respected for hit testing purposes and for positioning the callout anchor. Callouts in osxapp demonstrate the use of bindings to keep callouts in sync with underlying model objects.
    1ec5 committed Dec 14, 2015
    Configuration menu
    Copy the full SHA
    0cab780 View commit details
    Browse the repository at this point in the history
  2. [osx, ios] Improved annotation interaction

    Corrected annotation image alignment rects used in positioning the popover and hit testing for selection. The alignment rects were flipped in a couple places and we were getting lucky until now.
    
    Query for any point annotation within a slop area that extends by the maximum image dimensions in each direction, then filter by annotations whose images actually hit-test. (So to select an annotation that has a doughnut image, you have to click on the actual doughnut, not its hole.) It’s a fuzzy hit test with a four-pixel-radius slop area, so there shouldn’t be any clicking precision issues.
    
    Clicking on an annotation while a callout is open merely closes the callout popover, so it isn’t possible to go immediately from one callout to another. Since we still want to cycle through coincident annotations, keep track of the last selected annotation ID.
    
    Clicking on a visible point annotation whose center is out of the visible bounds now selects the annotation.
    
    Ported the callout-positioning portion of these changes to iOS. Also refactored some geometry conversion methods and removed a redundant constant.
    1ec5 committed Dec 14, 2015
    Configuration menu
    Copy the full SHA
    cc35f5a View commit details
    Browse the repository at this point in the history
  3. [osx] Drop Pin context menu item

    1ec5 committed Dec 14, 2015
    Configuration menu
    Copy the full SHA
    96145ef View commit details
    Browse the repository at this point in the history
  4. [osx] Annotation tooltips

    Annotations can optionally have tooltips. osxapp has an option, off by default, to assign a (localized) tooltip to each dropped pin.
    1ec5 committed Dec 14, 2015
    3 Configuration menu
    Copy the full SHA
    f542d7b View commit details
    Browse the repository at this point in the history
  5. [osx] Annotation cursors

    Also added an option to osxapp for assigning a random cursor to all the annotations each time an annotation is added or removed.
    1ec5 committed Dec 14, 2015
    Configuration menu
    Copy the full SHA
    004d040 View commit details
    Browse the repository at this point in the history
  6. [osx] Blanket the map with pins

    1ec5 committed Dec 14, 2015
    Configuration menu
    Copy the full SHA
    9d2e0a1 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    6890af9 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    df0511a View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    1598330 View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    47fb5e8 View commit details
    Browse the repository at this point in the history
  11. [osx] Renamed annotation IDs to annotation tags

    By analogy with Cocoa tracking area tags, tooltip tags, view tags, etc.
    1ec5 committed Dec 14, 2015
    Configuration menu
    Copy the full SHA
    7f04c5d View commit details
    Browse the repository at this point in the history
  12. [osx] Align build settings with Xcode framework project template

    In particular, -Os yields significant size improvements in Release.
    1ec5 committed Dec 14, 2015
    Configuration menu
    Copy the full SHA
    62e6c04 View commit details
    Browse the repository at this point in the history
  13. Configuration menu
    Copy the full SHA
    73324ae View commit details
    Browse the repository at this point in the history
  14. [osx] Documentation comments for public classes

    Added documentation comments for all the public headers that aren’t being shared with iOS.
    
    Removed an animated: parameter from -selectAnnotation: and -deselectAnnotation:: because callout popovers may extend beyond the entire window, there is no need to scroll the map to make the entire callout visible.
    
    Added missing geometric conversion methods.
    
    Renamed -mapView:regionWillChangeAnimated: et al. to say “camera” instead of “region”. “Region” leaves ambiguity about whether properties like rotation and pitch trigger this method. “Camera” associates these methods with the camera property, which seems apt.
    1ec5 committed Dec 14, 2015
    Configuration menu
    Copy the full SHA
    ea57be5 View commit details
    Browse the repository at this point in the history
  15. [osx] Fixed standalone launch of osxapp (and run-xosx)

    Mapbox.framework needs to be embedded in the application bundle.
    1ec5 committed Dec 14, 2015
    Configuration menu
    Copy the full SHA
    bab3935 View commit details
    Browse the repository at this point in the history
  16. Configuration menu
    Copy the full SHA
    fdff790 View commit details
    Browse the repository at this point in the history
  17. Configuration menu
    Copy the full SHA
    cd6830b View commit details
    Browse the repository at this point in the history
  18. [osx] Don’t strip on copy in Debug

    Stripping the framework means you can’t debug the framework.
    1ec5 committed Dec 14, 2015
    Configuration menu
    Copy the full SHA
    3f2fae5 View commit details
    Browse the repository at this point in the history
  19. [osx] Map camera

    Shared MGLMapCamera between iOS and OS X. Unfortunately -camera and -setCamera: implementations need to be copy-pasted for now.
    1ec5 committed Dec 14, 2015
    Configuration menu
    Copy the full SHA
    0fb2b85 View commit details
    Browse the repository at this point in the history
  20. Configuration menu
    Copy the full SHA
    b869d3c View commit details
    Browse the repository at this point in the history
  21. [osx] Remove All Pins command

    Also fixed an issue where removing a selected annotation failed to deselect it.
    1ec5 committed Dec 14, 2015
    Configuration menu
    Copy the full SHA
    0722d26 View commit details
    Browse the repository at this point in the history
  22. [ios] Strip OS X–specific APIs from iOS documentation

    appledoc can’t understand conditional compilation. This is the best we can do until we move to Jazzy.
    1ec5 committed Dec 14, 2015
    Configuration menu
    Copy the full SHA
    e7d7add View commit details
    Browse the repository at this point in the history
  23. [osx] Printing

    Copied some pixel-reading code from HeadlessView.
    1ec5 committed Dec 14, 2015
    Configuration menu
    Copy the full SHA
    727dd61 View commit details
    Browse the repository at this point in the history
  24. [osx] Sort candidate annotations by proximity to tap

    Like 78a39c1 for #3261 on iOS.
    1ec5 committed Dec 14, 2015
    Configuration menu
    Copy the full SHA
    835bb6a View commit details
    Browse the repository at this point in the history
  25. [osx] Corrected documentation

    Corrected the path to the build output. Also added a missing inline comment.
    1ec5 committed Dec 14, 2015
    Configuration menu
    Copy the full SHA
    a01dd8a View commit details
    Browse the repository at this point in the history