Add fill extrusion style property that enables rounded corners for extruded buildings (Core feature) (#4343)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Bart Louwers <bart@emeel.net>
This commit is contained in:
@@ -39,6 +39,17 @@ FillExtrusionLayer::~FillExtrusionLayer() = default;
|
||||
|
||||
// Property getters
|
||||
|
||||
jni::Local<jni::Object<>> FillExtrusionLayer::getFillExtrusionRoundedCornerDistance(jni::JNIEnv& env) {
|
||||
using namespace mbgl::android::conversion;
|
||||
auto layer = layerPtr.get();
|
||||
if (!layer) {
|
||||
return std::move(*convert<jni::Local<jni::Object<>>>(
|
||||
env, style::FillExtrusionLayer::getDefaultFillExtrusionRoundedCornerDistance()));
|
||||
}
|
||||
return std::move(
|
||||
*convert<jni::Local<jni::Object<>>>(env, toFillExtrusionLayer(*layer).getFillExtrusionRoundedCornerDistance()));
|
||||
}
|
||||
|
||||
jni::Local<jni::Object<>> FillExtrusionLayer::getFillExtrusionOpacity(jni::JNIEnv& env) {
|
||||
using namespace mbgl::android::conversion;
|
||||
auto layer = layerPtr.get();
|
||||
@@ -288,6 +299,8 @@ void FillExtrusionJavaLayerPeerFactory::registerNative(jni::JNIEnv& env) {
|
||||
jni::MakePeer<FillExtrusionLayer, jni::String&, jni::String&>,
|
||||
"initialize",
|
||||
"finalize",
|
||||
METHOD(&FillExtrusionLayer::getFillExtrusionRoundedCornerDistance,
|
||||
"nativeGetFillExtrusionRoundedCornerDistance"),
|
||||
METHOD(&FillExtrusionLayer::getFillExtrusionOpacityTransition, "nativeGetFillExtrusionOpacityTransition"),
|
||||
METHOD(&FillExtrusionLayer::setFillExtrusionOpacityTransition, "nativeSetFillExtrusionOpacityTransition"),
|
||||
METHOD(&FillExtrusionLayer::getFillExtrusionOpacity, "nativeGetFillExtrusionOpacity"),
|
||||
|
||||
@@ -26,6 +26,8 @@ public:
|
||||
|
||||
// Properties
|
||||
|
||||
jni::Local<jni::Object<jni::ObjectTag>> getFillExtrusionRoundedCornerDistance(jni::JNIEnv&);
|
||||
|
||||
jni::Local<jni::Object<jni::ObjectTag>> getFillExtrusionOpacity(jni::JNIEnv&);
|
||||
void setFillExtrusionOpacityTransition(jni::JNIEnv&, jlong duration, jlong delay);
|
||||
jni::Local<jni::Object<TransitionOptions>> getFillExtrusionOpacityTransition(jni::JNIEnv&);
|
||||
|
||||
@@ -143,6 +143,18 @@ public class FillExtrusionLayer extends Layer {
|
||||
|
||||
// Property getters
|
||||
|
||||
/**
|
||||
* Get the FillExtrusionRoundedCornerDistance property
|
||||
*
|
||||
* @return property wrapper value around Float
|
||||
*/
|
||||
@NonNull
|
||||
@SuppressWarnings("unchecked")
|
||||
public PropertyValue<Float> getFillExtrusionRoundedCornerDistance() {
|
||||
checkThread();
|
||||
return (PropertyValue<Float>) new PropertyValue("fill-extrusion-rounded-corner-distance", nativeGetFillExtrusionRoundedCornerDistance());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the FillExtrusionOpacity property
|
||||
*
|
||||
@@ -382,6 +394,10 @@ public class FillExtrusionLayer extends Layer {
|
||||
return (PropertyValue<Boolean>) new PropertyValue("fill-extrusion-vertical-gradient", nativeGetFillExtrusionVerticalGradient());
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Keep
|
||||
private native Object nativeGetFillExtrusionRoundedCornerDistance();
|
||||
|
||||
@NonNull
|
||||
@Keep
|
||||
private native Object nativeGetFillExtrusionOpacity();
|
||||
|
||||
@@ -2767,4 +2767,24 @@ The unit is in density-independent pixels only for SDF sprites that were created
|
||||
return new LayoutPropertyValue<>("circle-sort-key", value);
|
||||
}
|
||||
|
||||
/**
|
||||
* The distance from the corner that will be cut and replaced with rounded corner.
|
||||
*
|
||||
* @param value a Float value
|
||||
* @return property wrapper around Float
|
||||
*/
|
||||
public static PropertyValue<Float> fillExtrusionRoundedCornerDistance(Float value) {
|
||||
return new LayoutPropertyValue<>("fill-extrusion-rounded-corner-distance", value);
|
||||
}
|
||||
|
||||
/**
|
||||
* The distance from the corner that will be cut and replaced with rounded corner.
|
||||
*
|
||||
* @param value a Float value
|
||||
* @return property wrapper around Float
|
||||
*/
|
||||
public static PropertyValue<Expression> fillExtrusionRoundedCornerDistance(Expression value) {
|
||||
return new LayoutPropertyValue<>("fill-extrusion-rounded-corner-distance", value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user