Commit Graph

3530 Commits

Author SHA1 Message Date
Jason Wray
11d506f803 Merge tag 'ios-v3.7.6' into master 2018-03-14 12:48:30 -04:00
Ivo van Dongen
d7bc36db6f [core] prevent render thread from waking up unneeded on still rendering
- No longer sends a update message to the render frontend when rendering in still mode only to shortcut it in the renderer. This prevents unneeded render passes in qt.
2018-03-14 16:39:58 +02:00
Lucas Wojciechowski
5b3ebc4a24 [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-08 15:48:08 -08:00
Asheem Mamoowala
c54035afb1 [core] Support a range of zooms in TileRange. Accounts for TilePyramid requesting parent tiles of ideal zoom tiles. 2018-03-08 13:49:56 -08:00
Thiago Marcos P. Santos
eeadec3e06 [qt] Fix Qt build on MinGW 2018-03-07 14:18:07 +01:00
Ivo van Dongen
eec0db49e4 [core] blacklist vao usage on mali t720 (sapphire 650)
Avoids problems on (amongst others) Samsung Galaxy J3
2018-03-01 11:46:04 +01:00
Ivo van Dongen
b00e92fa94 [core] check opengl error state after custom layer invocations 2018-03-01 11:46:04 +01:00
Konstantin Käfer
aacd55c64b [core] continue loading style even if we mutate it
When we load a stale style from cache, and the user immediately starts mutating it, we should continue loading the style so that we'll get a fresh copy of the data into our cache and avoid perpetually showing the stale style.
2018-02-27 17:22:54 +01:00
Chris Loer
91f6e09dad [core] Don't reuse heatmap render texture on viewport resize.
Fixes issue #11228.
2018-02-26 14:23:01 -08:00
Thiago Marcos P. Santos
17334c74a0 [core] Fix build with Qt + Android + GCC 4.9
Android uses and old libc when building
with GCC 4.9 and some math functions are not
on std::.
2018-02-26 13:22:33 +02:00
Konstantin Käfer
5de373fff0 [core] continue loading style even if we mutate it
When we load a stale style from cache, and the user immediately starts mutating it, we should continue loading the style so that we'll get a fresh copy of the data into our cache and avoid perpetually showing the stale style.
2018-02-23 11:29:15 +01:00
Ivo van Dongen
6eedccf35f [core] blacklist vao usage on mali t720 (sapphire 650)
Avoids problems on (amongst others) Samsung Galaxy J3
2018-02-23 12:03:53 +02:00
Ivo van Dongen
86c824ce80 [core] check opengl error state after custom layer invocations 2018-02-23 12:03:53 +02:00
Ansis Brammanis
ebb72b9002 [core] don't hide icons if text is an empty string 2018-02-21 14:38:30 -05:00
Asheem Mamoowala
2cef23e3ff [core] Support a range of zooms in TileRange. Accounts for TilePyramid requesting parent tiles of ideal zoom tiles. 2018-02-19 11:07:54 -08:00
Chris Loer
8635dab4c3 [core] Implement Expression::serialize()
Issue #10714
- Each expression stores its operator as a string, and default serialization is [operator, serialize(child1), ...]
- Custom implementations of `serialize` for Expression types that don't follow the pattern
- expression::Value -> mbgl::Value converter
- node_expression bindings to expose `serialize`
2018-02-16 14:07:33 -08: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
Ansis Brammanis
1fdec7a5c1 [core] fix opacity of duplicate labels with -allow-overlap: true 2018-02-15 09:36:29 -05:00
Molly Lloyd
8a283b0306 [core] add support for mapzen terrarium (#11154)
* add support for mapzen terrarium

* Encoding --> DEMEncoding, avoid if statement when unpacking elevation values

* add Terrarium test

* update submodule

* remove redundant checks
2018-02-14 13:17:55 -08:00
Molly Lloyd
a386cac452 [core] add maxzoom uniform for raster-dem tilesets (#11134)
* add maxzoom uniform to support external tilesets

* update git sha for gl-js

* try and fix android crash

* name default maxzoom constant
2018-02-14 11:28:51 -08:00
Chris Loer
a11b277bc1 [core] Rename "onLowMemory" to "reduceMemoryUse".
Android still calls "reduceMemoryUse" only while handling a low memory event.
iOS, on the other hand, calls "reduceMemoryUse" every time it enters the background.
2018-02-14 10:55:16 -08:00
Chris Loer
f721779963 [core] fix onLowMemory to release GL buffers
Context cleanup must be called _after_ render sources release tiles.
2018-02-14 10:55:16 -08:00
Asheem Mamoowala
aefc3daeed TileJSON Bounds allows values inclusive of world extents 2018-02-12 16:56:20 -08: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
Asheem Mamoowala
4ab07f5be7 Reset tileset-based render sources when any tileset properties changed. (#11042) 2018-02-08 12:39:30 -08:00
Asheem Mamoowala
64374711a0 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-02-08 12:39:30 -08:00
Chris Loer
057af7e75f [core] Don't crash on line labels with 0 glyphs.
Fixes issue #10956.
2018-02-07 12:11:19 -08:00
Asheem Mamoowala
6c5e457590 Add options for Custom Geometry Source types to enable clipping and wrapping geometry (#11041) 2018-02-07 12:07:31 -08:00
Molly Lloyd
e03f7a4d1f [core] align raster-dem tiles to pixel grid (#11119)
* align raster-dem tiles to pixel grid

* revert ignored hillshade tests
2018-02-06 10:56:42 -08:00
Chris Loer
d3deb6d71b [core] Don't crash on line labels with 0 glyphs.
Fixes issue #10956.
2018-02-06 09:12:21 -08:00
Chris Loer
14db958ae5 [core] Account for overscaling in debug collision circles.
Fixes issue #11116.
Port of GL JS issue $6041.
2018-02-06 08:46:15 -08:00
Asheem Mamoowala
671dfefc1e Reset tileset-based render sources when any tileset properties changed. (#11042) 2018-02-05 19:31:03 -05:00
Tobrun
c8a96bb24f [android] - blacklist adreno 2xx for VAO support 2018-02-05 12:03:19 +01:00
Tobrun
e2a4dffcb6 [android] - blacklist adreno 2xx for VAO support 2018-01-31 12:58:22 +01:00
Konstantin Käfer
191c0124c7 [core] don't force downloading of Open Sans fonts
When a SymbolLayer doesn't have a text-font defined, we automatically add Open Sans/Arial Unicode MS. However, when the SymbolLayer is only used for rendering icons, it doesn't have text-field defined either. In those cases, we still force downloading Open Sans/Arial Unicode MS during offline pack creation. If the user doesn't use this font, this change should save ~15MB and a few seconds in download time.
2018-01-25 17:21:18 -08:00
Konstantin Käfer
c148a7a061 [core] align implementations of local and asset file source 2018-01-25 13:45:47 -08:00
Konstantin Käfer
fcc3808c83 [core] align raster imagery rendering to pixel rid to avoid blurriness 2018-01-24 17:02:18 -08:00
Minh Nguyễn
fb5b8d34f2 Reimplement style values atop NSExpression (#10726)
* [ios, macos] Import headers, not implementation files

* [core] Added accessors for various expression parameters

Added missing parameter accessors to various expression operator classes, as well as a method on InterpolatorBase and Step that enumerates the stops and their values.

* [ios, macos] Silenced warning in test of error condition

* [ios, macos] Made MGLSphericalPosition boxable

* [ios, macos] Implemented array enumeration during conversion

* [ios, macos] Temporarily ignore heatmap layer type

* [ios, macos] Migrated MGLSymbolStyleLayer.text to NSExpression

MGLSymbolStyleLayer.text is now of type NSExpression instead of MGLStyleValue, as a first step toward migrating the entire layer API from style values to expressions.

Implemented conversions from NSExpression to JSON arrays and vice versa. The most common NSExpression functions are now converted into style expressions, but not all of the most common style expression operators are supported yet.

* [ios, macos] Implemented string coercion

* [ios, macos] Color literals

* [ios, macos] Null constant expressions

* [ios, macos] Convert dictionary literals

* [ios, macos] Interpolation expressions

* [ios, macos] to-boolean, to-number, get from object

* [ios, macos] Variable expressions

Implemented custom expression functions for assigning and referring to variables within the context of an expression. Variables are assigned via a “context dictionary” and applied to an subexpression that is given as another argument to the same expression. Also implemented built-in variable expressions for zoom level and heatmap density.

* [ios, macos] Convert colors, offsets, padding in expressions to JSON objects

* [ios, macos] Expression-based style property getters

Implemented a conversion from mbgl::style::PropertyValues to Objective-C JSON objects, which are then converted to NSExpressions.

* [ios, macos] Consolidated property value–expression conversion in MGLStyleValueTransformer

* [ios, macos] Predicate and expression guide

Extracted documentation about predicates from a documentation comment in MGLVectorStyleLayer.h to a new jazzy guide. Added details about NSExpression support as well. Began updating the “For Style Authors” guide to reflect the transition from style values to expressions.

* [ios, macos] Updated style authoring guide

Updated the Information for Style Authors guide to discuss expressions instead of style functions. Included a table mapping style specification expression operators to NSExpression syntaxes.

* [ios, macos] Migrated codegen templates to expressions

* [ios, macos] Applied expression changes via codegen

Ran make darwin-style-code.

* [macos] Migrated macosapp to expressions

* [ios, macos] Updated style function guide

This guide needs to be thoroughly rewritten, but for now the example code has been migrated to expressions.

* [ios, macos] Eviscerated style function tests

* [ios, macos] Updated changelogs

* [ios] Migrated iosapp to expressions

* [ios, macos] Exposed JSON conversion methods publicly

* [ios, macos] Removed MGLStyleValue, MGLStyleFunction
2018-01-24 00:04:02 -08:00
Konstantin Käfer
d4ed8d1a44 [core] fix style parsing crash when a layer's paint property is not an object 2018-01-23 13:45:14 -08:00
Molly Lloyd
f3294200c6 [core] add raster-dem source type and hillshade layer type (#10642) 2018-01-23 10:49:23 -08:00
Chris Loer
b2e71abfee Prune unused layers from CrossTileSymbolIndex
Fixes issue #10939 -- removed layers would leak entries in the CrossTileSymbolIndex.
2018-01-19 14:50:42 -08:00
Chris Loer
fa57224791 [core] GeometryTileData needs to be updated in lockstep with FeatureIndex 2018-01-18 14:36:22 -08:00
Chris Loer
656a6373b9 [core] Synchronize state of CollisionIndex and FeatureIndexes.
Fixes issue #10778, in which mismatch between FeatureIndex and CollisionIndex could lead to inconsistent results or even invalid array access.
2018-01-18 14:36:22 -08:00
Chris Loer
b3d3ab0e31 [core] Prevent symbols at the same zoom from sharing a crossTileID.
Port of GL JS PR #5994.
Fixes issue #10844, which would allow multiple symbols in a tile to share the same crossTileID as one of their duplicate parent-tile symbols. Once the symbols shared a crossTileID, they would permanently remain "duplicates" of each other, even after increasing zoom level allowed the CrossTileSymbolIndex to distinguish between them.
2018-01-17 12:49:30 -08:00
Ansis Brammanis
6782d7af37 [core] fix symbol flickering after data updates 2018-01-11 14:07:00 -05:00
Ansis Brammanis
68159f8d01 [core] fix updating CrossTileSymbolIndex after bucket update
emplace does not overwite existing entries
2018-01-11 14:07:00 -05:00
John Firebaugh
542713fefe [core] Add warning for invalid text-font values 2018-01-10 15:31:12 -08:00
John Firebaugh
76ed5079a5 [core, ios, macos, android] Add data-driven-styling support for text-font 2018-01-10 15:31:12 -08:00
John Firebaugh
c9da6e4959 [core] Account for circle-stroke-width in queryRenderedFeatures 2018-01-10 14:22:44 -08:00
John Firebaugh
cedda5ef4f [core] Handle NaN input to interpolate and step 2018-01-10 13:45:00 -08:00