[core] Support fill-extrusion-vertical-gradient
This commit is contained in:
@@ -67,6 +67,12 @@ public:
|
||||
void setFillExtrusionBaseTransition(const TransitionOptions&);
|
||||
TransitionOptions getFillExtrusionBaseTransition() const;
|
||||
|
||||
static PropertyValue<bool> getDefaultFillExtrusionVerticalGradient();
|
||||
PropertyValue<bool> getFillExtrusionVerticalGradient() const;
|
||||
void setFillExtrusionVerticalGradient(PropertyValue<bool>);
|
||||
void setFillExtrusionVerticalGradientTransition(const TransitionOptions&);
|
||||
TransitionOptions getFillExtrusionVerticalGradientTransition() const;
|
||||
|
||||
// Private implementation
|
||||
|
||||
class Impl;
|
||||
|
||||
Submodule mapbox-gl-js updated: e04689d294...9aed7d6785
@@ -22,7 +22,7 @@
|
||||
"aws-sdk": "^2.285.1",
|
||||
"csscolorparser": "^1.0.2",
|
||||
"ejs": "^2.4.1",
|
||||
"esm": "^3.0.55",
|
||||
"esm": "^3.0.84",
|
||||
"express": "^4.11.1",
|
||||
"flow-remove-types": "^1.2.1",
|
||||
"json-stringify-pretty-compact": "^1.0.4",
|
||||
|
||||
@@ -370,6 +370,18 @@ public class FillExtrusionLayer extends Layer {
|
||||
nativeSetFillExtrusionBaseTransition(options.getDuration(), options.getDelay());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the FillExtrusionVerticalGradient property
|
||||
*
|
||||
* @return property wrapper value around Boolean
|
||||
*/
|
||||
@NonNull
|
||||
@SuppressWarnings("unchecked")
|
||||
public PropertyValue<Boolean> getFillExtrusionVerticalGradient() {
|
||||
checkThread();
|
||||
return (PropertyValue<Boolean>) new PropertyValue("fill-extrusion-vertical-gradient", nativeGetFillExtrusionVerticalGradient());
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Keep
|
||||
private native Object nativeGetFillExtrusionOpacity();
|
||||
@@ -440,6 +452,10 @@ public class FillExtrusionLayer extends Layer {
|
||||
@Keep
|
||||
private native void nativeSetFillExtrusionBaseTransition(long duration, long delay);
|
||||
|
||||
@NonNull
|
||||
@Keep
|
||||
private native Object nativeGetFillExtrusionVerticalGradient();
|
||||
|
||||
@Override
|
||||
@Keep
|
||||
protected native void finalize() throws Throwable;
|
||||
|
||||
@@ -1244,6 +1244,26 @@ public class PropertyFactory {
|
||||
return new PaintPropertyValue<>("fill-extrusion-base", expression);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether to apply a vertical gradient to the sides of a fill-extrusion layer. If true, sides will be shaded slightly darker farther down.
|
||||
*
|
||||
* @param value a Boolean value
|
||||
* @return property wrapper around Boolean
|
||||
*/
|
||||
public static PropertyValue<Boolean> fillExtrusionVerticalGradient(Boolean value) {
|
||||
return new PaintPropertyValue<>("fill-extrusion-vertical-gradient", value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether to apply a vertical gradient to the sides of a fill-extrusion layer. If true, sides will be shaded slightly darker farther down.
|
||||
*
|
||||
* @param expression an expression statement
|
||||
* @return property wrapper around an expression statement
|
||||
*/
|
||||
public static PropertyValue<Expression> fillExtrusionVerticalGradient(Expression expression) {
|
||||
return new PaintPropertyValue<>("fill-extrusion-vertical-gradient", expression);
|
||||
}
|
||||
|
||||
/**
|
||||
* The opacity at which the image will be drawn.
|
||||
*
|
||||
|
||||
@@ -401,4 +401,20 @@ public class FillExtrusionLayerTest extends BaseActivityTest {
|
||||
assertEquals(layer.getFillExtrusionBase().getExpression(), expression);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFillExtrusionVerticalGradientAsConstant() {
|
||||
validateTestSetup();
|
||||
setupLayer();
|
||||
Timber.i("fill-extrusion-vertical-gradient");
|
||||
invoke(mapboxMap, (uiController, mapboxMap) -> {
|
||||
assertNotNull(layer);
|
||||
assertNull(layer.getFillExtrusionVerticalGradient().getValue());
|
||||
|
||||
// Set and Get
|
||||
Boolean propertyValue = true;
|
||||
layer.setProperties(fillExtrusionVerticalGradient(propertyValue));
|
||||
assertEquals(layer.getFillExtrusionVerticalGradient().getValue(), propertyValue);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,6 +154,11 @@ namespace android {
|
||||
toFillExtrusionLayer(layer).setFillExtrusionBaseTransition(options);
|
||||
}
|
||||
|
||||
jni::Local<jni::Object<>> FillExtrusionLayer::getFillExtrusionVerticalGradient(jni::JNIEnv& env) {
|
||||
using namespace mbgl::android::conversion;
|
||||
return std::move(*convert<jni::Local<jni::Object<>>>(env, toFillExtrusionLayer(layer).getFillExtrusionVerticalGradient()));
|
||||
}
|
||||
|
||||
|
||||
// FillExtrusionJavaLayerPeerFactory
|
||||
|
||||
@@ -207,7 +212,8 @@ namespace android {
|
||||
METHOD(&FillExtrusionLayer::getFillExtrusionHeight, "nativeGetFillExtrusionHeight"),
|
||||
METHOD(&FillExtrusionLayer::getFillExtrusionBaseTransition, "nativeGetFillExtrusionBaseTransition"),
|
||||
METHOD(&FillExtrusionLayer::setFillExtrusionBaseTransition, "nativeSetFillExtrusionBaseTransition"),
|
||||
METHOD(&FillExtrusionLayer::getFillExtrusionBase, "nativeGetFillExtrusionBase"));
|
||||
METHOD(&FillExtrusionLayer::getFillExtrusionBase, "nativeGetFillExtrusionBase"),
|
||||
METHOD(&FillExtrusionLayer::getFillExtrusionVerticalGradient, "nativeGetFillExtrusionVerticalGradient"));
|
||||
}
|
||||
|
||||
} // namespace android
|
||||
|
||||
@@ -51,6 +51,8 @@ public:
|
||||
void setFillExtrusionBaseTransition(jni::JNIEnv&, jlong duration, jlong delay);
|
||||
jni::Local<jni::Object<TransitionOptions>> getFillExtrusionBaseTransition(jni::JNIEnv&);
|
||||
|
||||
jni::Local<jni::Object<jni::ObjectTag>> getFillExtrusionVerticalGradient(jni::JNIEnv&);
|
||||
|
||||
}; // class FillExtrusionLayer
|
||||
|
||||
class FillExtrusionJavaLayerPeerFactory final : public JavaLayerPeerFactory, public mbgl::FillExtrusionLayerFactory {
|
||||
|
||||
@@ -32,7 +32,8 @@
|
||||
},
|
||||
"paint_fill-extrusion": {
|
||||
"fill-extrusion-translate": "fill-extrusion-translation",
|
||||
"fill-extrusion-translate-anchor": "fill-extrusion-translation-anchor"
|
||||
"fill-extrusion-translate-anchor": "fill-extrusion-translation-anchor",
|
||||
"fill-extrusion-vertical-gradient": "fill-extrusion-has-vertical-gradient"
|
||||
},
|
||||
"paint_raster": {
|
||||
"raster-brightness-min": "minimum-raster-brightness",
|
||||
|
||||
@@ -163,6 +163,33 @@ MGL_EXPORT
|
||||
*/
|
||||
@property (nonatomic) MGLTransition fillExtrusionColorTransition;
|
||||
|
||||
/**
|
||||
Whether to apply a vertical gradient to the sides of a fill-extrusion layer. If
|
||||
true, sides will be shaded slightly darker farther down.
|
||||
|
||||
The default value of this property is an expression that evaluates to `YES`.
|
||||
Set this property to `nil` to reset it to the default value.
|
||||
|
||||
This attribute corresponds to the <a
|
||||
href="https://www.mapbox.com/mapbox-gl-style-spec/#paint-fill-extrusion-vertical-gradient"><code>fill-extrusion-vertical-gradient</code></a>
|
||||
layout property in the Mapbox Style Specification.
|
||||
|
||||
You can set this property to an expression containing any of the following:
|
||||
|
||||
* Constant Boolean values
|
||||
* Predefined functions, including mathematical and string operators
|
||||
* Conditional expressions
|
||||
* Variable assignments and references to assigned variables
|
||||
* Step functions applied to the `$zoomLevel` variable
|
||||
|
||||
This property does not support applying interpolation functions to the
|
||||
`$zoomLevel` variable or applying interpolation or step functions to feature
|
||||
attributes.
|
||||
*/
|
||||
@property (nonatomic, null_resettable) NSExpression *fillExtrusionHasVerticalGradient;
|
||||
|
||||
@property (nonatomic, null_resettable) NSExpression *fillExtrusionVerticalGradient __attribute__((unavailable("Use fillExtrusionHasVerticalGradient instead.")));
|
||||
|
||||
/**
|
||||
The height with which to extrude this layer.
|
||||
|
||||
|
||||
@@ -156,6 +156,31 @@ namespace mbgl {
|
||||
return transition;
|
||||
}
|
||||
|
||||
- (void)setFillExtrusionHasVerticalGradient:(NSExpression *)fillExtrusionHasVerticalGradient {
|
||||
MGLAssertStyleLayerIsValid();
|
||||
MGLLogDebug(@"Setting fillExtrusionHasVerticalGradient: %@", fillExtrusionHasVerticalGradient);
|
||||
|
||||
auto mbglValue = MGLStyleValueTransformer<bool, NSNumber *>().toPropertyValue<mbgl::style::PropertyValue<bool>>(fillExtrusionHasVerticalGradient, false);
|
||||
self.rawLayer->setFillExtrusionVerticalGradient(mbglValue);
|
||||
}
|
||||
|
||||
- (NSExpression *)fillExtrusionHasVerticalGradient {
|
||||
MGLAssertStyleLayerIsValid();
|
||||
|
||||
auto propertyValue = self.rawLayer->getFillExtrusionVerticalGradient();
|
||||
if (propertyValue.isUndefined()) {
|
||||
propertyValue = self.rawLayer->getDefaultFillExtrusionVerticalGradient();
|
||||
}
|
||||
return MGLStyleValueTransformer<bool, NSNumber *>().toExpression(propertyValue);
|
||||
}
|
||||
|
||||
- (void)setFillExtrusionVerticalGradient:(NSExpression *)fillExtrusionVerticalGradient {
|
||||
}
|
||||
|
||||
- (NSExpression *)fillExtrusionVerticalGradient {
|
||||
return self.fillExtrusionHasVerticalGradient;
|
||||
}
|
||||
|
||||
- (void)setFillExtrusionHeight:(NSExpression *)fillExtrusionHeight {
|
||||
MGLAssertStyleLayerIsValid();
|
||||
MGLLogDebug(@"Setting fillExtrusionHeight: %@", fillExtrusionHeight);
|
||||
|
||||
@@ -205,6 +205,50 @@
|
||||
XCTAssertEqual(fillExtrusionColorTransition.duration, transitionTest.duration);
|
||||
}
|
||||
|
||||
// fill-extrusion-vertical-gradient
|
||||
{
|
||||
XCTAssertTrue(rawLayer->getFillExtrusionVerticalGradient().isUndefined(),
|
||||
@"fill-extrusion-vertical-gradient should be unset initially.");
|
||||
NSExpression *defaultExpression = layer.fillExtrusionHasVerticalGradient;
|
||||
|
||||
NSExpression *constantExpression = [NSExpression expressionWithFormat:@"false"];
|
||||
layer.fillExtrusionHasVerticalGradient = constantExpression;
|
||||
mbgl::style::PropertyValue<bool> propertyValue = { false };
|
||||
XCTAssertEqual(rawLayer->getFillExtrusionVerticalGradient(), propertyValue,
|
||||
@"Setting fillExtrusionHasVerticalGradient to a constant value expression should update fill-extrusion-vertical-gradient.");
|
||||
XCTAssertEqualObjects(layer.fillExtrusionHasVerticalGradient, constantExpression,
|
||||
@"fillExtrusionHasVerticalGradient should round-trip constant value expressions.");
|
||||
|
||||
constantExpression = [NSExpression expressionWithFormat:@"false"];
|
||||
NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}];
|
||||
layer.fillExtrusionHasVerticalGradient = functionExpression;
|
||||
|
||||
{
|
||||
using namespace mbgl::style::expression::dsl;
|
||||
propertyValue = mbgl::style::PropertyExpression<bool>(
|
||||
step(zoom(), literal(false), 18.0, literal(false))
|
||||
);
|
||||
}
|
||||
|
||||
XCTAssertEqual(rawLayer->getFillExtrusionVerticalGradient(), propertyValue,
|
||||
@"Setting fillExtrusionHasVerticalGradient to a camera expression should update fill-extrusion-vertical-gradient.");
|
||||
XCTAssertEqualObjects(layer.fillExtrusionHasVerticalGradient, functionExpression,
|
||||
@"fillExtrusionHasVerticalGradient should round-trip camera expressions.");
|
||||
|
||||
|
||||
layer.fillExtrusionHasVerticalGradient = nil;
|
||||
XCTAssertTrue(rawLayer->getFillExtrusionVerticalGradient().isUndefined(),
|
||||
@"Unsetting fillExtrusionHasVerticalGradient should return fill-extrusion-vertical-gradient to the default value.");
|
||||
XCTAssertEqualObjects(layer.fillExtrusionHasVerticalGradient, defaultExpression,
|
||||
@"fillExtrusionHasVerticalGradient should return the default value after being unset.");
|
||||
|
||||
functionExpression = [NSExpression expressionForKeyPath:@"bogus"];
|
||||
XCTAssertThrowsSpecificNamed(layer.fillExtrusionHasVerticalGradient = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillExtrusionLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
|
||||
functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}];
|
||||
functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}];
|
||||
XCTAssertThrowsSpecificNamed(layer.fillExtrusionHasVerticalGradient = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillExtrusionLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes.");
|
||||
}
|
||||
|
||||
// fill-extrusion-height
|
||||
{
|
||||
XCTAssertTrue(rawLayer->getFillExtrusionHeight().isUndefined(),
|
||||
@@ -481,6 +525,7 @@
|
||||
- (void)testPropertyNames {
|
||||
[self testPropertyName:@"fill-extrusion-base" isBoolean:NO];
|
||||
[self testPropertyName:@"fill-extrusion-color" isBoolean:NO];
|
||||
[self testPropertyName:@"fill-extrusion-has-vertical-gradient" isBoolean:YES];
|
||||
[self testPropertyName:@"fill-extrusion-height" isBoolean:NO];
|
||||
[self testPropertyName:@"fill-extrusion-opacity" isBoolean:NO];
|
||||
[self testPropertyName:@"fill-extrusion-pattern" isBoolean:NO];
|
||||
|
||||
@@ -226,6 +226,7 @@ In style JSON | In Objective-C | In Swift
|
||||
|
||||
In style JSON | In Objective-C | In Swift
|
||||
--------------|----------------|---------
|
||||
`fill-extrusion-vertical-gradient` | `MGLFillExtrusionStyleLayer.fillExtrusionHasVerticalGradient` | `MGLFillExtrusionStyleLayer.fillExtrusionHasVerticalGradient`
|
||||
`fill-extrusion-translate` | `MGLFillExtrusionStyleLayer.fillExtrusionTranslation` | `MGLFillExtrusionStyleLayer.fillExtrusionTranslation`
|
||||
`fill-extrusion-translate-anchor` | `MGLFillExtrusionStyleLayer.fillExtrusionTranslationAnchor` | `MGLFillExtrusionStyleLayer.fillExtrusionTranslationAnchor`
|
||||
|
||||
|
||||
@@ -213,6 +213,7 @@ In style JSON | In Objective-C | In Swift
|
||||
|
||||
In style JSON | In Objective-C | In Swift
|
||||
--------------|----------------|---------
|
||||
`fill-extrusion-vertical-gradient` | `MGLFillExtrusionStyleLayer.fillExtrusionHasVerticalGradient` | `MGLFillExtrusionStyleLayer.fillExtrusionHasVerticalGradient`
|
||||
`fill-extrusion-translate` | `MGLFillExtrusionStyleLayer.fillExtrusionTranslation` | `MGLFillExtrusionStyleLayer.fillExtrusionTranslation`
|
||||
`fill-extrusion-translate-anchor` | `MGLFillExtrusionStyleLayer.fillExtrusionTranslationAnchor` | `MGLFillExtrusionStyleLayer.fillExtrusionTranslationAnchor`
|
||||
|
||||
|
||||
@@ -226,7 +226,8 @@ style::FillExtrusionPaintProperties::PossiblyEvaluated RenderFillExtrusionLayer:
|
||||
evaluated.get<style::FillExtrusionTranslateAnchor>(),
|
||||
evaluated.get<style::FillExtrusionPattern>(),
|
||||
evaluated.get<style::FillExtrusionHeight>(),
|
||||
evaluated.get<style::FillExtrusionBase>()
|
||||
evaluated.get<style::FillExtrusionBase>(),
|
||||
evaluated.get<style::FillExtrusionVerticalGradient>()
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ namespace mbgl {
|
||||
namespace shaders {
|
||||
|
||||
const char* extrusion_texture::name = "extrusion_texture";
|
||||
const char* extrusion_texture::vertexSource = source() + 35603;
|
||||
const char* extrusion_texture::fragmentSource = source() + 35819;
|
||||
const char* extrusion_texture::vertexSource = source() + 36207;
|
||||
const char* extrusion_texture::fragmentSource = source() + 36423;
|
||||
|
||||
// Uncompressed source of extrusion_texture.vertex.glsl:
|
||||
/*
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace shaders {
|
||||
|
||||
const char* fill_extrusion::name = "fill_extrusion";
|
||||
const char* fill_extrusion::vertexSource = source() + 27816;
|
||||
const char* fill_extrusion::fragmentSource = source() + 30616;
|
||||
const char* fill_extrusion::fragmentSource = source() + 30918;
|
||||
|
||||
// Uncompressed source of fill_extrusion.vertex.glsl:
|
||||
/*
|
||||
@@ -16,6 +16,7 @@ uniform mat4 u_matrix;
|
||||
uniform vec3 u_lightcolor;
|
||||
uniform lowp vec3 u_lightpos;
|
||||
uniform lowp float u_lightintensity;
|
||||
uniform float u_vertical_gradient;
|
||||
|
||||
attribute vec2 a_pos;
|
||||
attribute vec4 a_normal_ed;
|
||||
@@ -100,7 +101,11 @@ void main() {
|
||||
|
||||
// Add gradient along z axis of side surfaces
|
||||
if (normal.y != 0.0) {
|
||||
directional *= clamp((t + base) * pow(height / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0);
|
||||
// This avoids another branching statement, but multiplies by a constant of 0.84 if no vertical gradient,
|
||||
// and otherwise calculates the gradient based on base + height
|
||||
directional *= (
|
||||
(1.0 - u_vertical_gradient) +
|
||||
(u_vertical_gradient * clamp((t + base) * pow(height / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0)));
|
||||
}
|
||||
|
||||
// Assign final color based on surface + ambient light color, diffuse light directional, and light color
|
||||
|
||||
@@ -7,8 +7,8 @@ namespace mbgl {
|
||||
namespace shaders {
|
||||
|
||||
const char* fill_extrusion_pattern::name = "fill_extrusion_pattern";
|
||||
const char* fill_extrusion_pattern::vertexSource = source() + 30748;
|
||||
const char* fill_extrusion_pattern::fragmentSource = source() + 34026;
|
||||
const char* fill_extrusion_pattern::vertexSource = source() + 31050;
|
||||
const char* fill_extrusion_pattern::fragmentSource = source() + 34630;
|
||||
|
||||
// Uncompressed source of fill_extrusion_pattern.vertex.glsl:
|
||||
/*
|
||||
@@ -17,6 +17,7 @@ uniform vec2 u_pixel_coord_upper;
|
||||
uniform vec2 u_pixel_coord_lower;
|
||||
uniform float u_height_factor;
|
||||
uniform vec4 u_scale;
|
||||
uniform float u_vertical_gradient;
|
||||
|
||||
uniform vec3 u_lightcolor;
|
||||
uniform lowp vec3 u_lightpos;
|
||||
@@ -132,7 +133,11 @@ void main() {
|
||||
directional = mix((1.0 - u_lightintensity), max((0.5 + u_lightintensity), 1.0), directional);
|
||||
|
||||
if (normal.y != 0.0) {
|
||||
directional *= clamp((t + base) * pow(height / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0);
|
||||
// This avoids another branching statement, but multiplies by a constant of 0.84 if no vertical gradient,
|
||||
// and otherwise calculates the gradient based on base + height
|
||||
directional *= (
|
||||
(1.0 - u_vertical_gradient) +
|
||||
(u_vertical_gradient * clamp((t + base) * pow(height / 150.0, 0.5), mix(0.7, 0.98, 1.0 - u_lightintensity), 1.0)));
|
||||
}
|
||||
|
||||
v_lighting.rgb += clamp(directional * u_lightcolor, mix(vec3(0.0), vec3(0.3), 1.0 - u_lightcolor), vec3(1.0));
|
||||
|
||||
@@ -7,8 +7,8 @@ namespace mbgl {
|
||||
namespace shaders {
|
||||
|
||||
const char* hillshade::name = "hillshade";
|
||||
const char* hillshade::vertexSource = source() + 38765;
|
||||
const char* hillshade::fragmentSource = source() + 38964;
|
||||
const char* hillshade::vertexSource = source() + 39369;
|
||||
const char* hillshade::fragmentSource = source() + 39568;
|
||||
|
||||
// Uncompressed source of hillshade.vertex.glsl:
|
||||
/*
|
||||
|
||||
@@ -7,8 +7,8 @@ namespace mbgl {
|
||||
namespace shaders {
|
||||
|
||||
const char* hillshade_prepare::name = "hillshade_prepare";
|
||||
const char* hillshade_prepare::vertexSource = source() + 36031;
|
||||
const char* hillshade_prepare::fragmentSource = source() + 36245;
|
||||
const char* hillshade_prepare::vertexSource = source() + 36635;
|
||||
const char* hillshade_prepare::fragmentSource = source() + 36849;
|
||||
|
||||
// Uncompressed source of hillshade_prepare.vertex.glsl:
|
||||
/*
|
||||
|
||||
@@ -7,8 +7,8 @@ namespace mbgl {
|
||||
namespace shaders {
|
||||
|
||||
const char* line::name = "line";
|
||||
const char* line::vertexSource = source() + 41600;
|
||||
const char* line::fragmentSource = source() + 46063;
|
||||
const char* line::vertexSource = source() + 42204;
|
||||
const char* line::fragmentSource = source() + 46667;
|
||||
|
||||
// Uncompressed source of line.vertex.glsl:
|
||||
/*
|
||||
|
||||
@@ -7,8 +7,8 @@ namespace mbgl {
|
||||
namespace shaders {
|
||||
|
||||
const char* line_gradient::name = "line_gradient";
|
||||
const char* line_gradient::vertexSource = source() + 47235;
|
||||
const char* line_gradient::fragmentSource = source() + 51544;
|
||||
const char* line_gradient::vertexSource = source() + 47839;
|
||||
const char* line_gradient::fragmentSource = source() + 52148;
|
||||
|
||||
// Uncompressed source of line_gradient.vertex.glsl:
|
||||
/*
|
||||
|
||||
@@ -7,8 +7,8 @@ namespace mbgl {
|
||||
namespace shaders {
|
||||
|
||||
const char* line_pattern::name = "line_pattern";
|
||||
const char* line_pattern::vertexSource = source() + 52829;
|
||||
const char* line_pattern::fragmentSource = source() + 57905;
|
||||
const char* line_pattern::vertexSource = source() + 53433;
|
||||
const char* line_pattern::fragmentSource = source() + 58509;
|
||||
|
||||
// Uncompressed source of line_pattern.vertex.glsl:
|
||||
/*
|
||||
|
||||
@@ -7,8 +7,8 @@ namespace mbgl {
|
||||
namespace shaders {
|
||||
|
||||
const char* line_sdf::name = "line_sdf";
|
||||
const char* line_sdf::vertexSource = source() + 61204;
|
||||
const char* line_sdf::fragmentSource = source() + 66571;
|
||||
const char* line_sdf::vertexSource = source() + 61808;
|
||||
const char* line_sdf::fragmentSource = source() + 67175;
|
||||
|
||||
// Uncompressed source of line_sdf.vertex.glsl:
|
||||
/*
|
||||
|
||||
@@ -7,8 +7,8 @@ namespace mbgl {
|
||||
namespace shaders {
|
||||
|
||||
const char* raster::name = "raster";
|
||||
const char* raster::vertexSource = source() + 68497;
|
||||
const char* raster::fragmentSource = source() + 69310;
|
||||
const char* raster::vertexSource = source() + 69101;
|
||||
const char* raster::fragmentSource = source() + 69914;
|
||||
|
||||
// Uncompressed source of raster.vertex.glsl:
|
||||
/*
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,8 +7,8 @@ namespace mbgl {
|
||||
namespace shaders {
|
||||
|
||||
const char* symbol_icon::name = "symbol_icon";
|
||||
const char* symbol_icon::vertexSource = source() + 70714;
|
||||
const char* symbol_icon::fragmentSource = source() + 74120;
|
||||
const char* symbol_icon::vertexSource = source() + 71318;
|
||||
const char* symbol_icon::fragmentSource = source() + 74724;
|
||||
|
||||
// Uncompressed source of symbol_icon.vertex.glsl:
|
||||
/*
|
||||
|
||||
@@ -7,8 +7,8 @@ namespace mbgl {
|
||||
namespace shaders {
|
||||
|
||||
const char* symbol_sdf::name = "symbol_sdf";
|
||||
const char* symbol_sdf::vertexSource = source() + 74570;
|
||||
const char* symbol_sdf::fragmentSource = source() + 80495;
|
||||
const char* symbol_sdf::vertexSource = source() + 75174;
|
||||
const char* symbol_sdf::fragmentSource = source() + 81099;
|
||||
|
||||
// Uncompressed source of symbol_sdf.vertex.glsl:
|
||||
/*
|
||||
|
||||
@@ -252,6 +252,33 @@ TransitionOptions FillExtrusionLayer::getFillExtrusionBaseTransition() const {
|
||||
return impl().paint.template get<FillExtrusionBase>().options;
|
||||
}
|
||||
|
||||
PropertyValue<bool> FillExtrusionLayer::getDefaultFillExtrusionVerticalGradient() {
|
||||
return { true };
|
||||
}
|
||||
|
||||
PropertyValue<bool> FillExtrusionLayer::getFillExtrusionVerticalGradient() const {
|
||||
return impl().paint.template get<FillExtrusionVerticalGradient>().value;
|
||||
}
|
||||
|
||||
void FillExtrusionLayer::setFillExtrusionVerticalGradient(PropertyValue<bool> value) {
|
||||
if (value == getFillExtrusionVerticalGradient())
|
||||
return;
|
||||
auto impl_ = mutableImpl();
|
||||
impl_->paint.template get<FillExtrusionVerticalGradient>().value = value;
|
||||
baseImpl = std::move(impl_);
|
||||
observer->onLayerChanged(*this);
|
||||
}
|
||||
|
||||
void FillExtrusionLayer::setFillExtrusionVerticalGradientTransition(const TransitionOptions& options) {
|
||||
auto impl_ = mutableImpl();
|
||||
impl_->paint.template get<FillExtrusionVerticalGradient>().options = options;
|
||||
baseImpl = std::move(impl_);
|
||||
}
|
||||
|
||||
TransitionOptions FillExtrusionLayer::getFillExtrusionVerticalGradientTransition() const {
|
||||
return impl().paint.template get<FillExtrusionVerticalGradient>().options;
|
||||
}
|
||||
|
||||
using namespace conversion;
|
||||
|
||||
optional<Error> FillExtrusionLayer::setPaintProperty(const std::string& name, const Convertible& value) {
|
||||
@@ -264,6 +291,7 @@ optional<Error> FillExtrusionLayer::setPaintProperty(const std::string& name, co
|
||||
FillExtrusionPattern,
|
||||
FillExtrusionHeight,
|
||||
FillExtrusionBase,
|
||||
FillExtrusionVerticalGradient,
|
||||
FillExtrusionOpacityTransition,
|
||||
FillExtrusionColorTransition,
|
||||
FillExtrusionTranslateTransition,
|
||||
@@ -271,6 +299,7 @@ optional<Error> FillExtrusionLayer::setPaintProperty(const std::string& name, co
|
||||
FillExtrusionPatternTransition,
|
||||
FillExtrusionHeightTransition,
|
||||
FillExtrusionBaseTransition,
|
||||
FillExtrusionVerticalGradientTransition,
|
||||
};
|
||||
|
||||
Property property = Property::Unknown;
|
||||
@@ -345,6 +374,16 @@ optional<Error> FillExtrusionLayer::setPaintProperty(const std::string& name, co
|
||||
property = Property::FillExtrusionBaseTransition;
|
||||
}
|
||||
break;
|
||||
case util::hashFNV1a("fill-extrusion-vertical-gradient"):
|
||||
if (name == "fill-extrusion-vertical-gradient") {
|
||||
property = Property::FillExtrusionVerticalGradient;
|
||||
}
|
||||
break;
|
||||
case util::hashFNV1a("fill-extrusion-vertical-gradient-transition"):
|
||||
if (name == "fill-extrusion-vertical-gradient-transition") {
|
||||
property = Property::FillExtrusionVerticalGradientTransition;
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
@@ -432,6 +471,18 @@ optional<Error> FillExtrusionLayer::setPaintProperty(const std::string& name, co
|
||||
|
||||
}
|
||||
|
||||
if (property == Property::FillExtrusionVerticalGradient) {
|
||||
Error error;
|
||||
optional<PropertyValue<bool>> typedValue = convert<PropertyValue<bool>>(value, error, false, false);
|
||||
if (!typedValue) {
|
||||
return error;
|
||||
}
|
||||
|
||||
setFillExtrusionVerticalGradient(*typedValue);
|
||||
return nullopt;
|
||||
|
||||
}
|
||||
|
||||
|
||||
Error error;
|
||||
optional<TransitionOptions> transition = convert<TransitionOptions>(value, error);
|
||||
@@ -474,6 +525,11 @@ optional<Error> FillExtrusionLayer::setPaintProperty(const std::string& name, co
|
||||
return nullopt;
|
||||
}
|
||||
|
||||
if (property == Property::FillExtrusionVerticalGradientTransition) {
|
||||
setFillExtrusionVerticalGradientTransition(*transition);
|
||||
return nullopt;
|
||||
}
|
||||
|
||||
|
||||
return Error { "layer doesn't support this property" };
|
||||
}
|
||||
|
||||
@@ -40,6 +40,10 @@ struct FillExtrusionBase : DataDrivenPaintProperty<float, attributes::a_base, un
|
||||
static float defaultValue() { return 0; }
|
||||
};
|
||||
|
||||
struct FillExtrusionVerticalGradient : PaintProperty<bool> {
|
||||
static bool defaultValue() { return true; }
|
||||
};
|
||||
|
||||
class FillExtrusionPaintProperties : public Properties<
|
||||
FillExtrusionOpacity,
|
||||
FillExtrusionColor,
|
||||
@@ -47,7 +51,8 @@ class FillExtrusionPaintProperties : public Properties<
|
||||
FillExtrusionTranslateAnchor,
|
||||
FillExtrusionPattern,
|
||||
FillExtrusionHeight,
|
||||
FillExtrusionBase
|
||||
FillExtrusionBase,
|
||||
FillExtrusionVerticalGradient
|
||||
> {};
|
||||
|
||||
} // namespace style
|
||||
|
||||
Reference in New Issue
Block a user