Commit Graph

49 Commits

Author SHA1 Message Date
John Firebaugh
aa216d0025 [core] Don't use a separate SpriteAtlas for annotation images
Instead, just add them to the Style as needed. Includes changes from #8905 and takes care to avoid regressing #3817.
2017-05-26 11:21:56 -07:00
John Firebaugh
1759603e12 [core] Simplify and fix sprite atlas coordinate calculations
* Always return image metrics exclusive of padding
* Work with integer coordinates whenever possible
* Eliminate redundant SpriteAtlasElement members
* Fix asymmetric re-padding in getIconQuad when pixelRatio != 1
* Add explanatory comments
2017-05-23 12:59:27 -07:00
Chris Loer
77b24bc0d3 [core] Throttle tiles to redo symbol placement at most once every 300ms.
Fixes issue #8435 and prepares for pitch-scaling changes in issue #8967.
2017-05-17 16:25:06 -07:00
Asheem Mamoowala
84e39611a0 [core] Move renderer/* files into sub-folders (#8983)
Move renderer/* files into sub-folders
2017-05-12 17:07:48 -07:00
John Firebaugh
c2a5894f2d [core] Immutable Impls 2017-05-12 11:26:27 -07:00
Bruno de Oliveira Abinader
5d89f6cd92 [core] Avoid calling virtual GeometryTile::cancel() on dtor
warning: Call to virtual function during destruction will not dispatch
to derived class [clang-analyzer-optin.cplusplus.VirtualCall]
2017-05-12 18:07:36 +03:00
John Firebaugh
89f1ffc6d2 [core] UpdateParameters ⇢ TileParameters 2017-05-04 07:29:08 -07:00
John Firebaugh
d5f4d0f05f [core] Move render-related sources out of style directory/namespace
Moves the following to the renderer directory and out of the style namespace:

* CascadeParameters
* PropertyEvaluationParameters
* UpdateParameters
* PropertyEvaluator
* DataDrivenPropertyEvaluator
* CrossFadedPropertyEvaluator
* PaintPropertyBinder
* PaintProperyStatistics
* PossiblyEvaluatedPropertyValue
* TransitioningLight
* EvaluatedLight
2017-05-03 08:30:17 -07:00
John Firebaugh
c2b00378b7 [all] Push querySourceFeatures back out to Map
Once Source and RendererSource are split, Source will no longer have access to tiles.
2017-05-02 08:45:09 -07:00
John Firebaugh
1c42daa152 [core] Tweak handling of annotation special case SpriteAtlas
* Simplify SymbolLayout; it never needs to care about more than one SpriteAtlas.
* Move the reference from SymbolLayer::Impl to SymbolBucket. This is a prerequisite for making layer Impls immutable.
2017-04-26 16:29:44 -07:00
Ivo van Dongen
3c175adf30 [core] split off render layers 2017-04-25 17:23:54 -07:00
Konstantin Käfer
9a9408e811 [core] Render parent raster tiles when ideal tile can't be loaded 2017-04-20 09:38:18 +02:00
Ivo van Dongen
7ddca3b611 [core] account for property functions in query rendered features 2017-04-19 17:21:28 -07:00
Ivo van Dongen
d752235ec7 [core] make Tile::getBucket const 2017-04-19 17:21:28 -07:00
John Firebaugh
a50d7a331b [core] Replace GlyphRangeSet in onGlyphsAvailable with optionals in the map
GlyphRangeSet isn't keyed by FontStack, so using it to indicate that a particular range was loaded could have produced false positives.
2017-04-14 15:39:31 -07:00
Chris Loer
5cdf838a38 [core] De-mutex GlyphAtlas and SpriteAtlas
- Expose glyph and icon information to workers via message interface.
 - Glyph/SpriteAtlas track which tiles have outstanding requests
    and send messages to them when glyphs/icons become available.
 - Remove obsolete "updateSymbolDependentTiles" pathway
 - Symbol preparation for a tile now depends on all glyphs becoming
    available before it can start.
 - Start tracking individual icons needed for a tile, although we don't
    do anything with the information yet.
 - Introduce typedef for GlyphID
2017-04-04 11:33:12 -07:00
Ivo van Dongen
b3ffeceb9e [core] check null data in query source features 2017-03-28 21:31:35 +03:00
Ivo van Dongen
96a53156c2 [core] don’t query rendered features until all data is available 2017-03-14 17:27:59 +02:00
Ivo van Dongen
0d10d2df1c [core] query source features 2017-03-09 13:11:23 -08:00
Ivo van Dongen
548675a196 [core] rename query options for query rendered features 2017-03-09 13:11:23 -08:00
Asheem Mamoowala
60d10dd27d [core] Add support for queryRenderedFeatures filter 2017-03-04 15:42:07 -08:00
John Firebaugh
ea4c0b77c3 [core] Replace FeatureIndex::collisionTile with a method parameter
This reduces state and simplifies the test added in the prior commit.
2017-01-10 10:15:22 -08:00
John Firebaugh
40051fb68e [core] Keep symbol and non-symbol buckets segregated
Discard prior symbol buckets only when new symbol buckets became available, in order to eliminate flickering when tiles are refreshed.
2017-01-10 10:15:22 -08:00
John Firebaugh
0c0064c050 [core] Get rid of user-specified refs 2017-01-04 17:38:33 -08:00
John Firebaugh
f74de67315 [core] Mark tile as incomplete while redoing placement 2016-12-14 12:15:29 -08:00
Konstantin Käfer
a7fa97e8a3 [core] don't run symbol placement more often than necessary 2016-11-14 10:35:15 +01:00
John Firebaugh
aa08796767 [core] Separate pathway for notifying workers of new images/glyphs 2016-11-07 10:16:35 -08:00
John Firebaugh
38e78e25df [core] No need for feature querying to support multipolygons 2016-10-11 10:54:58 +03:00
John Firebaugh
31be5d3c3a [core] Tiles that error on load are not renderable 2016-10-05 10:26:04 -07:00
John Firebaugh
dc1861f6d5 [core] Merge GlyphStore and GlyphAtlas 2016-09-19 09:40:43 -07:00
John Firebaugh
940124ff71 [core] Merge SpriteStore and SpriteAtlas 2016-09-19 09:40:43 -07:00
John Firebaugh
41bbd4e4f7 [core] Use an actor model for tile worker concurrency 2016-09-16 12:01:06 -07:00
John Firebaugh
c8217a8739 [core] Extract SymbolLayout from SymbolBucket
SymbolLayout lives on the worker thread and contains the persistent data needed for repeated placement. SymbolBucket contains the data generated during placement, and is transferred to the main thread for rendering.

This eliminates the risky sharing of GeometryTile::buckets between the main thread and worker thread during TileWorker::redoPlacement.

While here, rationalize the names of states a SymbolLayout may be in:

* Pending: Waiting for the necessary glyphs or icons to be available.
* Prepared: The potential positions of text and icons have been determined.
* Placed: The final positions have been determined, taking into account prior layers.

In TileWorker, all SymbolLayouts are stored in a single vector. Each SymbolLayout knows what state it is in, and TileWorker can easily determine how much progress it can make toward a final result.
2016-09-14 13:41:56 -07:00
Konstantin Käfer
426242fe41 [core] change bool to enum class bool TileLoadState 2016-09-07 17:56:38 +02:00
John Firebaugh
3635b9f147 [core] Prepare style observer interfaces for source reloading
* Renamed {Source,Tile}Observer::onNeedsRepaint to onTileUpdated. Messages should be in terms of what happened to the observed object, not in terms of what the observer needs to do. This also removes a confusing overlap of virtual methods on StyleObserver.
* Added style::Observer::onUpdate(Update). This is also a violation of the above rule, but I'm hopeful that it will disappear when update batching is implemented.
2016-09-06 12:52:14 -07:00
John Firebaugh
5b4f6335e3 [core] Add Source::Impl::reload 2016-09-06 12:52:14 -07:00
John Firebaugh
21dc12ee93 [core] Ensure that TileWorker can retain tileData after layout 2016-09-06 12:52:13 -07:00
John Firebaugh
7c801696eb [core] const consistency 2016-08-26 10:30:55 -07:00
John Firebaugh
e2f52a1dd8 [core] Copy only the necessary style layers to the worker 2016-06-17 11:38:03 -07:00
John Firebaugh
040bdb1994 [core] TileSource ⇢ TileLoader 2016-06-13 14:23:54 -07:00
John Firebaugh
b9be5fd768 [core] Simplify GeometryTile::setData 2016-06-13 10:59:34 -07:00
John Firebaugh
5c7dfd948f [core] *Tile ↔ *TileData
Tile is now the main base class; RasterTile, VectorTile, etc are its subclasses. GeometryTileData and its subclasses form the piece that's passed to the worker.
2016-06-13 10:59:33 -07:00
Young Hahn
a800d33dd8 [core] Don't earcut more than 500 inner rings 2016-05-31 10:15:18 -07:00
John Firebaugh
25eec28588 [core] Fix up v1 vector tile geometries with clipper 2016-05-31 10:15:18 -07:00
John Firebaugh
5864c8fc4c [core] Include geometry in queryRenderedFeatures results 2016-05-18 17:29:16 -07:00
John Firebaugh
1b1df9e354 [core] Add classifyRings 2016-05-18 17:29:16 -07:00
John Firebaugh
a64fe5062f [core] Simplify FilterEvaluator and fix crash
Previous implementation was assigning a temporary to FilterEvaluator<T>::extractor.
2016-05-04 09:56:34 +03:00
John Firebaugh
da78422c5c [core] Prepare Filter for public API (#4900) 2016-04-28 16:33:09 -07:00
John Firebaugh
62bbf2627a [core] Organize files that were in map folder better
Fixes #996
2016-02-11 17:30:35 -08:00