Commit Graph

296 Commits

Author SHA1 Message Date
John Firebaugh
10e4ea0f28 [core] Compress all shader source as a single corpus 2018-07-25 11:39:05 -07:00
Bruno de Oliveira Abinader
31cace784e [build] Bump benchmark to v1.4.1 2018-07-23 19:39:47 +03:00
John Firebaugh
7e5b054566 [build] See what happened when npm install fails 2018-07-20 13:22:25 -07:00
John Firebaugh
a3d988ab85 [core] Move expression.cpp to expression directory 2018-07-20 11:56:30 -07:00
John Firebaugh
c8edbb0500 [core] Replace {Source,Camera,Composite}Function with PropertyExpression 2018-07-20 11:56:30 -07:00
Konstantin Käfer
1985b893b7 [build] vendor Google Test 2018-07-20 10:58:50 -04:00
Konstantin Käfer
93d37282d9 [build] organize CMake targets in folders for IDEs 2018-07-17 18:36:17 +02:00
Konstantin Käfer
77894f0586 [core] treat parsedate as C++ file to remove C build rules
It is already wrapped with #ifdef __cplusplus extern "C", so we can safely compile it as C++ but retain C linkage
2018-07-16 18:25:09 +02:00
Konstantin Käfer
561e55eb6c [core] make the offline DB schema a regular include file 2018-07-16 18:24:51 +02:00
John Firebaugh
a6727921fc [core] Convert legacy functions directly to expressions 2018-07-13 13:37:27 -07:00
John Firebaugh
ca9ba9cb43 [build] Move all mason_use statements to a single file
So its checksum can be used in a CI cache key name.
2018-07-13 11:50:39 -07:00
Konstantin Käfer
cde7096e1c [build] add Node as executable for profiling action
This is now the same as the Run action
2018-07-06 16:00:43 +02:00
Mikhail Pozdnyakov
514485502d Rename HeatmapColorPropertyValue to ColorRampPropertyValue
Based on patch from @lbud (Lauren Budorick).

Give `HeatmapColorPropertyValue` a more generic name,
since the same value type will be used for both `heatmap-color`
and `line-gradient` properties.
2018-07-05 15:11:14 +03:00
Anand Thakker
cfd436c287 [core] Avoid blocking in Thread<Object> constructor (#12151)
* Introduce AspiringActor, EstablishedActor

This pair of objects represents the two-phase (parent-thread /
child-thread) construction that's needed to support constructing
Thread<Object> without blocking until the child thread is up and
running.

An `AspiringActor<O>` is responsible for:
 - ownership of the actor's `Mailbox`
 - allocating the memory for (but *not* constructing) the target object `O`

Using these two pieces--the mailbox and a stable address for `O`--an
`AspiringActor<O>` can accept messages for the target object, or provide
`ActorRef<O>`s that do so, before the object has actually been
constructed by the corresponding `EstablishedActor<O>`.  (Such messages
are queued in the mailbox until after the object is constructed.)

This allows for an `AspiringActor<O>` to be created and safely used by a
thread other than the one on which the target object will (eventually)
live.

An `EstablishedActor<O>` is responsible for managing the lifetime of the
target object `O` and the open/closed state of the parent's `mailbox`.

The `O` object's lifetime is contained by that of its owning
`EstablishedActor<O>`: the `EstablishedActor` constructor executes the
`O` constructor via "placement new", constructing it at the address
provided by the parent `AspiringActor`, and the `~EstablishedActor`
destructor similarly executes the `~O` destructor (after closing the
mailbox). `EstablishedActor` should therefore live entirely on the
thread intended to own `O`.

* Remove Actor#{invoke,ask}
2018-07-03 17:17:39 -04:00
Chris Loer
9ff5d34ef2 [core] Introduce "collator" expressions
Cross platform parsing and evaluation code.
2018-07-03 10:03:05 -07:00
Chris Loer
b9d3ecc990 [core] Introduce LanguageTag for parsing BCP 47 tags 2018-07-03 10:03:05 -07:00
Chris Loer
251f5e605f [core, vendor] Create vendored nunicode 1.8.
- Version bump to 1.8 necessary for "unaccent" functionality
- Qt now depends on nunicode, ruling out use of precompiled binaries
2018-07-03 10:03:05 -07:00
John Firebaugh
25ac89e018 [core] Remove stops-based *Function constructors 2018-06-29 15:38:11 -07:00
John Firebaugh
542a4b4501 [core] Replace use of *Stops with expressions DSL 2018-06-29 15:38:11 -07:00
John Firebaugh
ab5e496219 [tests] Replaced the ZoomHistory test with a render test 2018-06-28 16:31:48 -07:00
John Firebaugh
bc771ee02e [core] Split Interpolator into a separate file 2018-06-28 10:00:40 -07:00
John Firebaugh
37e71666d8 [node] Build and publish for node 6.x, 8.x, and 10.x
Note that we're still only testing the 6.x ABI (48).
2018-06-26 17:20:46 -07:00
John Firebaugh
ec05ee41d1 [node] Drop node 4.x support 2018-06-26 17:20:46 -07:00
Konstantin Käfer
488b68c693 [node] add compatibility with node-pre-gyp binary publishing 2018-06-26 10:51:56 -07:00
Konstantin Käfer
9af5172f98 [core] fix undefined behavior in LineAtlas::addDash 2018-06-12 10:55:46 +02:00
Konstantin Käfer
4943260d3b [build] cache Node + Nan headers globally, not build-specific 2018-06-04 10:43:21 +02:00
Jason Wray
7d050c4cda [ios, build] Remove obsolete UI tests, KIF and OHHTTPStubs submodules 2018-05-24 19:11:28 -04:00
Konstantin Käfer
2694c0df03 [build] disable parts of the build that require node when WITH_NODEJS=OFF is set 2018-05-24 21:50:29 +02:00
Anand Thakker
464fefab18 Accept constant expressions in non-dds properties (#11960)
Closes #11940
2018-05-23 09:54:49 -04:00
Tobrun
60505b0317 [android] - remove mips and armeabi as supported ABIs
[android] - bump CI image to NDK 17 compatible

[core] - remove setting edgeDistance to 0, comparison 'const short' > 32767 is always false

[android] - remove throwing in desructor, undefined behaviour

[android] - bump dependency versions of project
2018-05-22 17:53:34 +02:00
Konstantin Käfer
d1a266b3e6 [node] allow building all ABIs at once 2018-05-22 11:17:01 +02:00
Fabian Guerra
30376f3ce1 Merge branch 'release-boba' into master
# Conflicts:
#	mapbox-gl-js
#	platform/android/CHANGELOG.md
#	platform/android/MapboxGLAndroidSDK/gradle.properties
#	platform/android/gradle/dependencies.gradle
#	platform/darwin/src/MGLVectorTileSource.mm
#	platform/darwin/src/MGLVectorTileSource_Private.h
#	platform/ios/CHANGELOG.md
#	src/mbgl/style/expression/compound_expression.cpp
2018-05-17 11:47:31 -04:00
Lucas Wojciechowski
a4e2c1af1f [core] Convert "legacy" filters directly into expressions (#11610)
Ports the specialized filter-* expressions from GL JS, adding them to src/mbgl/style/expression/compound_expression.cpp
2018-05-10 12:37:14 -07:00
John Firebaugh
e423ef5609 [linux] Don't compile linux mbgl-loop-uv against node headers
Previously, `target_include_directories(mbgl-loop-uv PUBLIC ${NODEJS_INCLUDE_DIRS})` always applied. Compiles were working by accident because node is always installed in CI. Instead, split and inline loop-uv.cmake contents: linux uses `target_add_mason_package(mbgl-loop-uv PUBLIC libuv)`, node uses `target_include_directories(mbgl-loop-node PUBLIC ${NODEJS_INCLUDE_DIRS})`.
2018-05-04 07:19:36 -07:00
Chris Loer
b820ca4686 [core] Remove unused 'Throttler' class.
Throttler was previously used to control how frequently background placement ran.
2018-04-30 17:08:09 -07:00
Asheem Mamoowala
4344812ef5 [core] Streaming TileCover for polygonal regions (#11267)
A per-tile streaming algorithm for tile cover on points, lines, and polygons. Works for individual zoom levels, and not zoom ranges.
2018-04-26 07:43:38 -07:00
Anand Thakker
352d63d2ce Don't enforce ["zoom"] constraints for filters (#11672)
* Don't enforce ["zoom"] constraints for filters

Fixes #11594

* Add a couple of comments

* Fix ambiguous constructor call

* ParsingContext(optional<Type>) => ParsingContext(Type)
2018-04-12 16:02:48 -04:00
Bruno de Oliveira Abinader
c6b8d9dbb4 [test] Update Map.PrefetchTiles 2018-03-30 01:45:52 -04:00
Lucas Wojciechowski
8a3deab733 [core] Add expression filter support (#11251)
* WIP

* WIP

* WIP

* Remove Filter::operator()(const Feature&)

* WIP

* WIP

* WIP

* WIP

* Hook up expression filter evaluator

* Replace `shared_ptr` with &reference

* Fill in implementation of `void operator()(const ExpressionFilter&)`

* Fix failing tests

* Switch back to a shared_ptr per chat with @anandthakker

* Fix benchmark compilation

* Shot in the dark to fix CI

* Shot in the dark to fix CI (part 2)

* Shot in the dark to fix CI (part 3)

* In src/mbgl/style/conversion/filter.cpp, add a port of isExpressionFilter and use it to decide in Converter<Filter>::operator() whether to parse the incoming JSON as an ExpressionFilter or one of the legacy filter types

* Remove bool Filter::operator()(const GeometryTileFeature&) const

*  Ensure the map zoom is passed into filtering operations wherever applicable

* Add expression filter tests

* Addressed PR feedback

* Implement `NSPredicate *operator()(mbgl::style::ExpressionFilter filter)`

* Fix formatting& nit
2018-03-09 11:12:14 +01:00
John Firebaugh
54f3dc961e Relax type checking for "length" 2018-03-01 17:02:26 -08:00
Jesse Bounds
2e3145db47 Replace embedded telem implementation with mapbox-mobile-events library (#10698)
* [ios] Introduce mobile events dependency

This adds the mobile events dependency including the events library's namespaced header file so that the related compiled symbols are prefixed to make them specific to the maps SDK. A pre-compiled header file is added so that the namespaced header file is added in all places where it is needed (most importantly every events library file).

* [ios] Use new events library for telemetry events

This makes the following significant changes:

Refactors the MGLMapboxEvents singleton to delegate internally to an instance of MMEEventsManager that it keeps for itself. The MGLMapboxEvents public API is refactored to reflect this. Note: MGLMapboxEvents continues to handle checking for opt out

Uses that new events API in MGLMapboxEvents to send all telem events (and turnstile)

All embedded certs are removed since the new telem library uses public key info pinning

Legacy telemetry utility classes for location and networking are removed since those are implemented in the telem library

* [ios] Update submodules initialized by cmake

We no longer bring in SMCalloutView as a submodule so it is removed.
We now vendor the telemetry events library as a submodule so it is added.

* Update mapbox-mobile-events

* Update mobile events lib

* Set events options with MGL user defaults values

For options that historically could be set with user defaults in the Maps SDK, collect them and set the appropriate property values in the new events library.

Also, check the existence of two new optional configuration values MGLTelemetryAccessToken and MGLTelemetryBaseURL so that the events endpoint and access token can be configured and the access token can easily be set dynamically and apart from the access token for the maps API.

MGLTelemetryBaseURL replaces the legacy MGLTelemetryTestServerURL. This is ok because this value was never intended to be used by client applications. The new name better reflects the fact that the URL can be changed to any backend stack, not just a test server.

Because it is possible for the configuration values to be read from user defaults before the events manager is fully set up, this also adds a local cache for the baseURL and accessToken values so that they can be stored and applied once it is time to setup the the events manager.

* Update mapbox-mobile-events

mapbox-mobile-events was forced pushed to include https://github.com/mapbox/mapbox-events-ios/pull/28

* Rename MGLMapboxEvents singleton access method

Manager is not in the name of the class. Just call it an instance.

* Update mapbox-mobile-events

* Add comments about config value loading

* Guard against creating events for IB

* Refactor user defaults update handler

This updates the handling logic for user defaults to break apart config changes that require a check for pausing or resuming the events lib’s telemetry collection from config changes that can happen with no update to the pause/resume state.

It also ports the optimization from https://github.com/mapbox/mapbox-gl-native/pull/10803 so that the call to pause and resume is not performed unless the user defaults store has new values that have not yet been applied to the events library.

* Update mapbox-mobile-events

* Rename events submodule folder

* Fix incorrect events library refs

* Update mapbox-mobile-events

* Update user user agent id value

This value aligns with our schme of {source-sdk-platform} and will be used by the events library in the user agent and vendorid.

* Update mapbox-mobile-events

Pin to v3.0.0 (d522b18)

* Improve code comments

* [ios] Fixed a broken file reference to MGLTelemetryConfig.
2018-02-20 09:54:11 -05:00
Vladimir Agafonkin
82de856c94 [core, ios, macos, android, node] Heatmap layer (#11046)
Co-Authored-By: Konstantin Käfer <mail@kkaefer.com>
Co-Authored-By: Anand Thakker <anandthakker@users.noreply.github.com>
Co-Authored-By: Minh Nguyễn <1ec5@users.noreply.github.com>
2018-02-15 17:38:23 +02:00
Thiago Marcos P. Santos
fb65d25831 [core] Make RendererObserver a public interface
Needed by backends implementing asyncronous rendering
2018-02-09 20:28:54 +02:00
Konstantin Käfer
e7e6cffcf3 [build] convert CMake file list generation code to JavaScript
Bash sorting is weird...
2018-01-24 08:35:31 -08:00
Molly Lloyd
f3294200c6 [core] add raster-dem source type and hillshade layer type (#10642) 2018-01-23 10:49:23 -08:00
John Firebaugh
a13027c1b6 [core] Improve typing for !=, == expressions 2018-01-09 16:10:51 -08:00
Lauren Budorick
43a9bd3fba [core] Use separate shaders for background and clipping 2018-01-09 15:02:49 -08:00
Thiago Marcos P. Santos
f391271532 [windows][build] Make nodejs/npm optional 2018-01-08 22:58:20 +02:00
Asheem Mamoowala
10a44050f4 Support TileJSON bounds property (#10701)
* [core] Parse TileJSON bounds property
* [core] Add TileRange and LatLngBounds::contains(CanonicalTileID)
Move LatLngBounds::contains impl to cpp file
* [core] Skip tile creation outside of tileset bounds
* [core] Fix TileRange for wrapped bounds and use for CustomTileLoader instead of LatLngBounds comparisons for tiles.
2018-01-05 06:35:31 -08:00
Bruno de Oliveira Abinader
e91cab516c [glfw] Use args in GLFW example 2017-12-18 16:40:29 +02:00