Commit Graph

107 Commits

Author SHA1 Message Date
John Firebaugh
7d16824fda [core] Functions must have at least one stop
This is already enforced by the style validator in mapbox-gl-style-spec. Enforce it here too.
2016-12-01 09:00:06 -08:00
John Firebaugh
38fcbe21d4 [core] Convert style properties to a tuple-based approach
This converts the style property classes (CirclePaintProperties and so on) to the same tuple-based approach as gl::Attribute and gl::Uniform. The approach is outlined in https://github.com/mapbox/cpp/blob/master/C%2B%2B%20Structural%20Metaprogramming.md.

The main advantage of this approach is it allows writing algorithms that work on sets of style properties, without resorting to code generation or manually repetitive code. This lets us iterate on approaches to data-driven properties more easily.

Another advantage is that the cascading, unevaluated, and evaluated states of a set of properties exist as independent structures, instead of individual properties holding their own state. This is a more functional approach that makes data flow clearer and reduces state.
2016-11-17 15:13:38 -08:00
Minh Nguyễn
7ff036cd01 [core] Removed map attribution API
Since client code can readily access the individual sources, Map doesn’t need to expose a dedicated API for iterating over them.
2016-09-26 15:42:57 -07:00
Young Hahn
6a2ce352d1 Better handling for undefined icon|text-rotation-alignment (#6253)
* [core, ios, android] Use `auto` value for properties with calculated defaults

* Fix render tests
2016-09-21 16:07:33 -07:00
John Firebaugh
b4864ca9d5 [core] Trigger Source::Impl::reload when a filter or layout property is modified 2016-09-06 14:29:22 -07:00
John Firebaugh
fe2a26225f [core, ios, android, qt] Observe style layer mutations rather than requiring SDKs to use Map::update
This paves the way for updates to filter and layout properties to trigger a source reload, without each SDK having to participate in the implementation.
2016-09-06 14:29:22 -07:00
John Firebaugh
3a48c60813 [core] Add missing classed paint property getter 2016-09-06 12:52:14 -07:00
Dane Springmeyer
be08c79b6f update filter doc usage example (#6202) 2016-08-31 15:33:43 -07:00
John Firebaugh
d2abb1b6d5 [core] Change GeoJSONSource::getURL() to return an optional<std::string>
GeoJSON sources may have inline GeoJSON rather than a URL; returning an optional type ensures that consumers handle this case.
2016-08-26 10:30:55 -07:00
John Firebaugh
63cce78cf1 [core] Add static getters for property default values (#6124) 2016-08-23 12:49:47 -07:00
Ivo van Dongen
df3b44531e [core] #6071 - extract GeoJSONOptions conversion from GeoJSONSource conversion
* [core] geojson_options - retain original error message

* [core] tests - initial style conversion stub methods

* [core] geojsonoptions conversion - initial unit tests

* [core] tests - fix forward reference issue

* [core] geojsonoptions conversion - unit tests

* [core] geojsonoptions conversion - renamed Holder to Value
2016-08-23 14:57:55 +02:00
Konstantin Käfer
e6bcbdd5d3 [core] set correct depth values for CustomLayer so compositing works 2016-08-22 18:32:12 +02:00
Ivo van Dongen
26bdcadf7e [core] added template instances for Source.is<>(). 2016-08-18 11:48:41 +02:00
Konstantin Käfer
18176605f6 [core] support "scheme": "tms" in TileJSON files 2016-08-16 11:04:30 +02:00
Vladimir Agafonkin
9ecc0d9597 GeoJSON point clustering (#5724)
* add supercluster dependency
* prepare GeoJSONTile for Supercluster
* prepare GeoJSONSource for accepting options
* try removing mbgl::GeoJSON
* fix setGeoJSON types
* add GeoJSONSource getURL
* add geojson to include path
* add Supercluster index in GeoJSONSource
* fix GeoJSONSource getZoomRange
* bring back mbgl::GeoJSON header
* fix tidy warnings hopefully
* try test-suite with enabled cluster test
* fix formatting in clustering-related files
2016-07-27 20:18:41 +03:00
John Firebaugh
da35ef9f49 [core] Add support for $id key to filters
https://github.com/mapbox/mapbox-gl-style-spec/issues/391
2016-07-18 12:37:36 -07:00
Thiago Marcos P. Santos
86cebd4cca [core] Report conversion errors using std::string
char* increases the risk of pointing to a invalid reference. Qt had
to use a static variable as retainer to workaround.
2016-07-12 16:04:20 +03:00
Bruno de Oliveira Abinader
0878e09def [core] Added missing pragmas to style conversion headers 2016-07-11 17:01:31 +03:00
John Firebaugh
c09fb0f519 [core] Add support for circle-pitch-scale 2016-07-07 14:32:27 -07:00
Young Hahn
71a3b1d0db [core] geometry@0.8.0 / geojsonvt@6.0.0 (#5514)
* [core] geometry.hpp 0.8.0

* geojsonvt @ 6.0.0

* Update platform deps, build scripts

* Perf optimizations/cleanup

* Rebase in geometry@080

* D.R.Y. etc

* Ensure fill annotation geometries have closed rings.

* Optimizations

* Update to geojsonvt @ 6.1.0 for clean handoff between geojson parsing and geojsonvt

* Apply close multi/poly geoms for line annotations as well
2016-07-06 17:29:34 -04:00
John Firebaugh
021d4199cb [core, node] Implement bindings for addSource 2016-06-24 09:39:51 -07:00
John Firebaugh
16c435b151 [core, node] Implement bindings for addLayer 2016-06-24 09:39:51 -07:00
John Firebaugh
c4e4cc5081 [core] Adjust layer source properties to better reflect reality
* Layer source ID is immutable; must be provided to the constructor
* Layer source layer is mutable
* Layers with GeoJSON sources do not have a source layer

While here, make Layer::copy impl-private.
2016-06-24 09:39:15 -07:00
John Firebaugh
089c4e413f [core] Split up and clean up conversion.hpp 2016-06-24 09:39:15 -07:00
John Firebaugh
3459b83736 [core, node] Node bindings for setFilter 2016-06-21 18:24:49 -07:00
John Firebaugh
a18d6dda5d [core] Rewrite style parsing logic for reuse in node bindings 2016-06-21 15:38:13 -07:00
Bruno de Oliveira Abinader
2f8fce7bdb [core] Cleaned up TransitionOptions 2016-06-20 13:01:59 +03:00
Bruno de Oliveira Abinader
c20c1d6a6b [core] Avoid redundant 'inline' usage 2016-06-18 23:46:50 +03:00
John Firebaugh
900568cfb0 [core] Runtime source API: private impls 2016-06-16 13:27:15 -07:00
John Firebaugh
a0b2982119 [core] Prepare Filter and FilterEvaluator for extraction (#5366) 2016-06-15 14:55:45 -07:00
Young Hahn
199ea2a82a Support for icon-text-fit, icon-text-fit-padding (#5334)
* Add support for icon-text-fit

* Port unit tests for getIconQuads() from js => cpp

* Add support for padding in all 4 directions.

* Update all hashes post-merge
2016-06-15 17:13:31 -04:00
John Firebaugh
039b05ebb4 [core] Extract code templates to individual .ejs files 2016-06-13 17:22:05 -07:00
John Firebaugh
282e626ac1 [core] Make enum ↔ string conversion more generic-friendly
Rewrite enum.hpp in such a way that parseConstant can be defined generically for all enumerated types.

While there, properly validated enumerated property values.
2016-06-13 17:22:05 -07:00
Bruno de Oliveira Abinader
4161d197fd [tidy] Check modernize-pass-by-value
Ref: http://clang.llvm.org/extra/clang-tidy/checks/modernize-pass-by-value.html
2016-06-13 23:32:05 +03:00
Konstantin Käfer
2bdecdf9f9 [core] fix pedantic warning messages 2016-06-13 11:16:19 +02:00
Young Hahn
ecd4aa1439 text-pitch-alignment (#5288)
* First pass at port of https://github.com/mapbox/mapbox-gl-js/pull/2668

* RotationAlignmentType => AlignmentType

* Handle undefined default value for text-pitch-alignment and implement inheritance for this value from text-rotation-alignment

* Update dependencies

* Move handling fo undefined default value out of camelize functions
2016-06-10 23:05:15 -04:00
John Firebaugh
c902f9098b [core] Rationalize naming for style-related code 2016-06-02 14:51:39 -07:00
John Firebaugh
18149cbcc2 [core] Add {min,max}Zoom accessors 2016-06-02 14:51:39 -07:00
John Firebaugh
67ee51360c [core] Add Filter accessors 2016-06-02 14:51:39 -07:00
John Firebaugh
cadc617c76 [core] Introduce PropertyValue<T>
PropertyValue<T> represents the three possible types of style property value: undefined, constant, or function.
2016-06-02 14:51:39 -07:00
John Firebaugh
d7e1ecd19e [core] Generalize Map::{add,remove}CustomLayer 2016-06-02 14:51:39 -07:00
John Firebaugh
a43940afb2 [core] Runtime style layer API 2016-06-02 14:51:39 -07:00
Konstantin Käfer
e2bcea90fc [core] use #pragma once instead of ifdef include guards 2016-05-25 21:35:37 +02:00
John Firebaugh
c1f40b9e71 [core] Move enum type classes to implementation (#4831) 2016-04-25 13:34:41 -07:00
John Firebaugh
c4089b60bc [core] Extract Function::evaluation to a separate class (#4811)
This allows the Function<Faded<T>> partial specialization to be eliminated, giving all property functions a consistent storage type.
2016-04-25 09:51:47 -07:00
John Firebaugh
5939dd5b41 [core] Use the proper type for font stacks 2016-04-22 15:53:18 -07:00
John Firebaugh
2ea450205d [core] PlacementType ⇢ SymbolPlacementType 2016-04-21 14:05:40 -07:00
John Firebaugh
2df1c36ab8 [core] JoinType ⇢ LineJoinType 2016-04-21 14:05:40 -07:00
John Firebaugh
a14f0d2edd [core] CapType ⇢ LineCapType 2016-04-21 11:01:56 -07:00
Bruno de Oliveira Abinader
4909169996 [core] Added user-defined transition properties when modifying classes 2016-03-18 01:26:22 +02:00