It's a premultiplied image. This implies that we were misusing encodePNG
in most cases, as we were passing premultiplied pixels which were then
interpreted as unmultiplied. I changed encodePNG to accept premultipled
pixels, and unpremultiply in the implementations.
Annotation tiles may become partially parsed just like regular tiles,
for example if a point annotation is added to the map before the style's
sprite has been loaded. In such cases, they need to be reparsed or the
annotation will not be rendered. Previously, the code path for reparsing
would be short-circuited by a dynamic_cast<VectorTileData*> followed by
a null check. This commit removes that case and adds (back) a virtual
reparse method to the TileData interface.
We can log for different threads (main, map, workers, etc) so
we need to lock before adding the messages on the list.
This was causing few tests to randomly crash.
- MockFileSource
Will load pre-defined resources from the filesystem. It supports
passing a string, that when it matches an URL, will simulate a failure.
- MockView
It is just a no-op to not get in the way when testing
resource loading.
Few more additions:
- style.json
Specially crafted style that will look always for the same tile,
glyph range, etc at the "test/fixtures/resources/" path. No matter
where you look (or at what zoom), you always get the same stuff.
- vector.pbf
This taken from a part of Taipei that will request several glyph
ranges.
- catch SQLite exceptions and report them
- failed statements are ignored, we're really just caching here, so if it fails we're handling it gracefully elsewhere
- handle cases where the database file goes away after we opened it
- handle cases where the schema wasn't created after the database file was opened successfully
- add tests
- OpenGL ES 2 doesn't allow NPOT textures with wrap-around
- The Sprite object reported the map's pixelRatio, even though it loaded @2x assets
- Copying icons from the sprite into the atlas now uses bilinear scaling to scale up to the actual size
Now the FixtureLog is an Log::Observer instead of a backend. The
observer can sniff and filter log messages, that can be used
for fail a test if it emits a warning for example.