diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2018-07-13 18:14:12 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2018-07-20 11:56:30 -0700 |
commit | c8edbb0500cbf4baf1d5fdb0e63679539e166585 (patch) | |
tree | 750f3b72b9e3b1c91ddbc0541cfc64d7d80ffe71 /src/mbgl/programs/symbol_program.cpp | |
parent | 6d7072162b764c2432c010cd463a5a2c0093d606 (diff) | |
download | qtlocation-mapboxgl-c8edbb0500cbf4baf1d5fdb0e63679539e166585.tar.gz |
[core] Replace {Source,Camera,Composite}Function with PropertyExpression
Diffstat (limited to 'src/mbgl/programs/symbol_program.cpp')
-rw-r--r-- | src/mbgl/programs/symbol_program.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/mbgl/programs/symbol_program.cpp b/src/mbgl/programs/symbol_program.cpp index 84a7a53f1d..8df3b4ae3c 100644 --- a/src/mbgl/programs/symbol_program.cpp +++ b/src/mbgl/programs/symbol_program.cpp @@ -17,14 +17,20 @@ std::unique_ptr<SymbolSizeBinder> SymbolSizeBinder::create(const float tileZoom, const style::DataDrivenPropertyValue<float>& sizeProperty, const float defaultValue) { return sizeProperty.match( - [&] (const style::CompositeFunction<float>& function) -> std::unique_ptr<SymbolSizeBinder> { - return std::make_unique<CompositeFunctionSymbolSizeBinder>(tileZoom, function, defaultValue); - }, - [&] (const style::SourceFunction<float>& function) { - return std::make_unique<SourceFunctionSymbolSizeBinder>(tileZoom, function, defaultValue); + [&] (const Undefined& value) -> std::unique_ptr<SymbolSizeBinder> { + return std::make_unique<ConstantSymbolSizeBinder>(tileZoom, value, defaultValue); }, - [&] (const auto& value) -> std::unique_ptr<SymbolSizeBinder> { + [&] (float value) -> std::unique_ptr<SymbolSizeBinder> { return std::make_unique<ConstantSymbolSizeBinder>(tileZoom, value, defaultValue); + }, + [&] (const style::PropertyExpression<float>& expression) -> std::unique_ptr<SymbolSizeBinder> { + if (expression.isFeatureConstant()) { + return std::make_unique<ConstantSymbolSizeBinder>(tileZoom, expression, defaultValue); + } else if (expression.isZoomConstant()) { + return std::make_unique<SourceFunctionSymbolSizeBinder>(tileZoom, expression, defaultValue); + } else { + return std::make_unique<CompositeFunctionSymbolSizeBinder>(tileZoom, expression, defaultValue); + } } ); } |