summaryrefslogtreecommitdiff
path: root/src/mbgl/tile
Commit message (Collapse)AuthorAgeFilesLines
* [core][Android][Darwin] LayerManager creates RenderLayer instancesMikhail Pozdnyakov2018-11-272-3/+2
| | | | | | | | `LayerManager` is now responsible for `RenderLayer` instances creation, so that there is a single entry point for creating of objects, which correspond to a certain layer type. The `LayerType type` field is dropped from `Layer::Impl`.
* [core] Fix VectorTileFeature::getValue() semantics after geometry@v1.0.0Bruno de Oliveira Abinader2018-11-261-1/+2
|
* [core] Add use LayerTypeInfo::Layout for the layers that require LayoutAlexander Shalamov2018-11-191-1/+1
|
* [build] Update to geometry v1.0.0Bruno de Oliveira Abinader2018-11-137-21/+24
|
* [core] add priorities to resourcesHuyen Chau Nguyen2018-10-231-0/+1
| | | | | - priorities can be low or regular - offline downloads should have low priority to not throttle "regular requests"
* [core] remove some uses of <iostream> and <sstream>Konstantin Käfer2018-10-231-2/+0
|
* [core] don't use <boost/functional/hash.hpp> to avoid <locale> includeKonstantin Käfer2018-10-231-9/+8
|
* [core] Initial implementation of 'format' expressionChris Loer2018-10-151-10/+16
|
* [core] Port "collision group" plumbing to gl-native.Chris Loer2018-09-121-2/+2
| | | | | [node] Hook up map-wide "crossSourceCollisions" option, defaulting to true. [test] Pass "crossSourceCollisions" test option through test harness; enable cross-source-collisions tests on native.
* [core] simplify dependency layout process and refactor data structuresMolly Lloyd2018-08-312-105/+39
|
* [core] Simplify GeometryTileWorkerJohn Firebaugh2018-08-312-58/+25
| | | | | | | * The worker no longer needs to maintain symbol layer order. * No need for separate symbolLayoutsNeedPreparation state. That dates back to when we had "two phase" symbol layout. Now we can just check symbolLayouts.empty(). (Similarly for pattern layouts.) * No need to loop over symbol layouts twice in performSymbolLayout. Same reason as above. * Simplify iconAtlas initialization. It initialized via every possible branch, so just do it up front.
* [core] Implement CrossFadedDataDrivenProperty to add support for feature ↵Molly Lloyd2018-08-314-27/+129
| | | | expressions in `*-pattern` properties
* [core] Replace remaining dynamic_cast with static_castBruno de Oliveira Abinader2018-08-085-5/+20
|
* Fix compilation errors with libc++ on QNX 7Sudarsana Babu Nagineni2018-07-301-8/+8
| | | | | | | | | | This patch fixes the compilation errors on QNX 7: 1) QNX 7 compiler (i.e qcc based GCC 5.4.0 with libc++ from LLVM) has a limited c++11 feature support and causing the compilation errors with the inheriting constructors. This fixes the issues by providing the required constructors explicitly. 2) Resolves an ambiguous overload error with optional<T>
* [core] Use hand-rolled RTTIJohn Firebaugh2018-07-241-0/+6
|
* [core] Avoid blocking in Thread<Object> constructor (#12151)Anand Thakker2018-07-033-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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}
* [core] Measuring tiles requesting/parsing time using logging (#12152)Lloyd Sheng2018-06-211-0/+13
| | | | | | | | | | | | * Tile timing * Refactor logging code * Keep the scope of `messageStream` constrained * Make log message more clear * Fix crash issue if onlineResponse.data is null
* Set Tile loaded/rendered instead of marking tile as optional.Asheem Mamoowala2018-05-241-3/+3
|
* [core] re-assign ids when lng jumps to avoid flickerAnsis Brammanis2018-05-221-1/+1
|
* Merge branch 'release-boba' into masterupstream/fabian-merge-release-4.0.1-masterFabian Guerra2018-05-174-4/+0
|\ | | | | | | | | | | | | | | | | | | | | | | # 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
| * [core] Convert "legacy" filters directly into expressions (#11610)Lucas Wojciechowski2018-05-104-4/+0
| | | | | | Ports the specialized filter-* expressions from GL JS, adding them to src/mbgl/style/expression/compound_expression.cpp
* | [core] Remove unused 'Throttler' class.Chris Loer2018-04-301-1/+0
| | | | | | | | Throttler was previously used to control how frequently background placement ran.
* | [core] only index features within tile boundariesAnsis Brammanis2018-04-261-1/+1
| | | | | | | | | | | | | | Previously we relied on tile buffers for querying features who's rendered representations cross tile boundaries. Now we query multiple tiles making it unnecessary to index features that are completely outside a tile's boundaries.
* | [core] fix circle querying for scale and alignmentChris Loer2018-04-264-6/+15
| | | | | | | | | | | | | | This fixes circle querying for cases where either circle-pitch-alignment=map or circle-pitch-scaling=viewport
* | [core] fix querying circles across tile boundariesChris Loer2018-04-264-9/+21
| |
* | Port global symbol query from GL JS:Chris Loer2018-04-255-40/+18
|/ | | | | | | - Symbol querying is now global instead of per-tile - Symbols that bleed over tile boundaries no longer missed in queries - Symbol results now sorted based on rendering order (ie overlapping symbols change their sort order when a bearing change causes their render order to change) - Placement::retainedQueryData now responsible for maintaining symbol querying data for buckets that may no longer be in the TilePyramid.
* [core] Make FeatureIndex own GeometryTileData.Chris Loer2018-04-023-20/+13
| | | | | Prevents querying a FeatureIndex built against a separate set of data, which can lead to invalid index exceptions. The GeometryTileWorker 'data' member can still change independently of the data in the feature index, at the time 'setData' is called. The GeometryTileWorker maintains ownership of its local data (which may be used to re-parse) and clones the data for use by the FeatureIndex in the foreground.
* [core] Consolidate GeometryTile symbol/nonSymbolBucketsChris Loer2018-04-024-24/+11
| | | | Conversion to one-phase tile loading removed any need to track them separately.
* [core] Convert GeometryTileWorker to "one-phase" loadingChris Loer2018-04-024-129/+141
| | | | | Modest simplification refactoring (issue #10457). Also, fixes issue #11538, which was caused in part by a hole in the vestigial two-phase loading.
* [core] Fix potential race condition crash in symbol querying..Chris Loer2018-03-292-8/+25
| | | | | | Second half of fix for issue #11538. If a global placement took place between the time a tile's non-symbol layout updated and the time new symbol buckets arrived, the tile's new FeatureIndex would be committed, but the global CollisionIndex would be generated against the old symbolBuckets. The mismatch could cause the CollisionIndex to contain indices that didn't exist in the new FeatureIndex, and attempting to access them would generate an out-of-bounds exception.
* [core] Fix potential race condition crash in symbol querying..Chris Loer2018-03-292-6/+8
| | | | | | | | First half of fix for issue #11538. Testing `if (pendingData)` didn't work if there _was_ a data update, but the update was "the data for this tile is now null". In that case, the tile's FeatureIndex would be updated, but the tile's data member would remain unchanged. In the case of a tile's data being deleted, the matching FeatureIndex would have an empty set of bucketLayerIDs, but the _old_ data would still be in place for querying, and the symbolBuckets might not be updated yet (pending onPlacement). In this case `bucketLayerIDs.at(indexedFeature.bucketName)` could throw an out-of-range exception.
* [core] Add expression filter support (#11251)Lucas Wojciechowski2018-03-094-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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
* [core] add support for mapzen terrarium (#11154)Molly Lloyd2018-02-144-4/+7
| | | | | | | | | | | | * add support for mapzen terrarium * Encoding --> DEMEncoding, avoid if statement when unpacking elevation values * add Terrarium test * update submodule * remove redundant checks
* Add options for Custom Geometry Source types to enable clipping and wrapping ↵Asheem Mamoowala2018-02-071-1/+1
| | | | geometry (#11041)
* [core] add raster-dem source type and hillshade layer type (#10642)Molly Lloyd2018-01-2310-10/+295
|
* [core] GeometryTileData needs to be updated in lockstep with FeatureIndexChris Loer2018-01-182-1/+5
|
* [core] Synchronize state of CollisionIndex and FeatureIndexes.Chris Loer2018-01-183-1/+15
| | | | Fixes issue #10778, in which mismatch between FeatureIndex and CollisionIndex could lead to inconsistent results or even invalid array access.
* [core] fix symbol flickering after data updatesAnsis Brammanis2018-01-112-1/+7
|
* [core] port minor collision changes from -js (#10764)Ansis Brammanis2018-01-083-16/+0
|
* [core] Mark custom geometry tiles stale without clearing dataAsheem Mamoowala2017-12-062-5/+24
|
* [core] Android + old libstdc++ build fixThiago Marcos P. Santos2017-11-271-1/+2
|
* [core] Custom Geometry SourcesAsheem Mamoowala2017-11-222-0/+115
|
* [core] Symbol cross-fading.Chris Loer2017-11-173-0/+48
| | | | Hold onto tiles after they've been removed from the render tree long enough to run a fade animation on their symbols.
* [core] Cleanup in response to review comments.Chris Loer2017-11-172-2/+12
|
* [core] Cleanup in response to review commentsChris Loer2017-11-171-2/+2
|
* [core] Update queryRenderedFeatures to use global CollisionIndex.Chris Loer2017-11-172-2/+6
|
* [core] Switch from background to foreground placementChris Loer2017-11-175-70/+64
| | | | | | | | | | | | - Background placement code now just generates static symbol buffers - Don't render GeometryTiles until their symbols are loaded. This is necessary for the CrossTileSymbolIndex to successfully prevent flicker. - SymbolInstances are transferred to SymbolBucket for use on foreground during collision detection - Symbols are sorted on foreground by sorting their index buffer but leaving vertex buffers intact (only works within one segment) - Vertical glyphs are generated at same time as horizontal glyphs. `reprojectLineLabels` chooses which one to use at render time and hides the other. - Icons are now always represented with a single collision box, even if they're placed along a line (this means their rotation alignment may be wrong, but the approach of representing them with multiple collision boxes wasn't very accurate either). - Generate vertices for new debug collision boxes and collision circles - Only add symbols within tile boundaries (reduces work, avoids double-draw) - Update symbol_projection.cpp to support line label projection calls from CollisionIndex.
* [core] fix crash when querying GeoJSON tilesKonstantin Käfer2017-10-261-12/+12
|
* [core] make forcing cache/network only more explicitKonstantin Käfer2017-10-1210-64/+56
| | | | | | Previously, we used the existence of a `prior*` field in the Resource object as an indication for whether we should consult the cache or not. However, this is prone to error, since a failed cache lookup won't set any prior fields. Therefore, we manually set `priorExpires` to 0. This in turn triggered another bug where generated wrong expiration timestamps when the server response we got was expired (or expired between sending and receiving). This commit changes the flags so that we can now explicitly request CacheOnly/NetworkOnly (or All) loading methods, rather than the implicit Optional/Required naming scheme.
* [core] Split GeoJSONTileData and related classes into a separate headerAsheem Mamoowala2017-09-282-94/+95
|