This changes image size properties to be scales instead of pixel sizes.
The commit also adds fixes for handling image updates with the same ID,
adds tests for expressions in paint properties, as well as tests for using images
with pixel ratio greater than 1.
Finally it moves image-tilt-displacement and perspective-compensation properties
from layout to paint properties, and includes other minor cleanups.
This change introduces a new property type, Rotation, that uses
a custom interpolator, and that is currently applied to
all style properties named "bearing", with a period attribute.
The following methods are added to the `Renderer` class:
- `collectPlacedSymbolData()`
enables or disables collecting of the placed symbols data
- `getPlacedSymbolsData()`
if collecting of the placed symbols data is enabled, returns the
reference to the `PlacedSymbolData` vector holding the collected data.
It is used as const and also fixes a build issue on iOS:
```
Non-const lvalue reference to type ‘mbgl::OfflineRegion’ cannot bind
to a temporary of type ‘typename remove_reference<OfflineRegion &>::type’
(aka ‘mbgl::OfflineRegion’)
```
`Renderer::clearData()` is a better API than the removed `MapOptions::keepRenderData()`:
- gives more flexibility to the client
- similar to the existing `Renderer::reduceMemoryUse()`
- the `MapOptions::keepRenderData()` API implementation could not handle the raise condition, which
happened if the new still image request had come before all tiles from the previous requests were loaded.
Co-authored-by: Dane Springmeyer <dane@mapbox.com>
Platform integration callback for platforms that do not have full
run loop integration or don't want to block at the Mapbox GL Native
loop. It will be called from any thread and is up to the platform
to, after receiving the callback, call RunLoop::runOnce() from the
same thread as the Map object lives.
This change enables attaching images to the style with batches and
avoids massive re-allocations. Thus, it improves UI performance
especially at start-up time.
New setPrefetchZoomDelta(optional<uint8_t> delta) method allow overriding
default tile prefetch setting that is defined by the Map instance. The
method can be moved to generic style specification if found to be useful
for gl-js engine.