From aa43dfd6c1835570d437a4f7e66abcff4f953839 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Tue, 10 Apr 2018 14:26:22 +0200 Subject: [PATCH] [android] - add convinience step expression (#11641) --- .../style/expressions/Expression.java | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/expressions/Expression.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/expressions/Expression.java index bd1da2fef..05c67018a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/expressions/Expression.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/expressions/Expression.java @@ -2847,6 +2847,134 @@ public class Expression { return step(input, defaultOutput, Stop.toExpressionArray(stops)); } + /** + * Produces discrete, stepped results by evaluating a piecewise-constant function defined by pairs of + * input and output values (\"stops\"). The `input` may be any numeric expression (e.g., `[\"get\", \"population\"]`). + * Stop inputs must be numeric literals in strictly ascending order. + * Returns the output value of the stop just less than the input, + * or the first input if the input is less than the first stop. + *

+ * Example usage: + *

+ *
+   * {@code
+   * CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
+   * circleLayer.setProperties(
+   *     circleRadius(
+   *         step(1.0f, 0.0f,
+   *         literal(1.0f), literal(2.5f),
+   *         literal(10.0f), literal(5.0f)
+   *     )
+   * );
+   * }
+   * 
+ * + * @param input the input value + * @param defaultOutput the default output expression + * @param stops pair of input and output values + * @return expression + * @see Style specification + */ + public static Expression step(@NonNull Number input, @NonNull Number defaultOutput, Expression... stops) { + return step(literal(input), defaultOutput, stops); + } + + /** + * Produces discrete, stepped results by evaluating a piecewise-constant function defined by pairs of + * input and output values (\"stops\"). The `input` may be any numeric expression (e.g., `[\"get\", \"population\"]`). + * Stop inputs must be numeric literals in strictly ascending order. + * Returns the output value of the stop just less than the input, + * or the first input if the input is less than the first stop. + *

+ * Example usage: + *

+ *
+   * {@code
+   * CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
+   * circleLayer.setProperties(
+   *     circleRadius(
+   *         step(zoom(), 0.0f,
+   *         literal(1.0f), literal(2.5f),
+   *         literal(10.0f), literal(5.0f)
+   *     )
+   * );
+   * }
+   * 
+ * + * @param input the input expression + * @param defaultOutput the default output expression + * @param stops pair of input and output values + * @return expression + * @see Style specification + */ + public static Expression step(@NonNull Expression input, @NonNull Number defaultOutput, Expression... stops) { + return step(input, literal(defaultOutput), stops); + } + + /** + * Produces discrete, stepped results by evaluating a piecewise-constant function defined by pairs of + * input and output values (\"stops\"). The `input` may be any numeric expression (e.g., `[\"get\", \"population\"]`). + * Stop inputs must be numeric literals in strictly ascending order. + * Returns the output value of the stop just less than the input, + * or the first input if the input is less than the first stop. + *

+ * Example usage: + *

+ *
+   * {@code
+   * CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
+   * circleLayer.setProperties(
+   *     circleRadius(
+   *         step(zoom(), 0.0f,
+   *         stop(1, 2.5f),
+   *         stop(10, 5.0f)
+   *     )
+   * );
+   * }
+   * 
+ * + * @param input the input value + * @param defaultOutput the default output expression + * @param stops pair of input and output values + * @return expression + * @see Style specification + */ + public static Expression step(@NonNull Number input, @NonNull Number defaultOutput, Stop... stops) { + return step(literal(input), defaultOutput, Stop.toExpressionArray(stops)); + } + + /** + * Produces discrete, stepped results by evaluating a piecewise-constant function defined by pairs of + * input and output values (\"stops\"). The `input` may be any numeric expression (e.g., `[\"get\", \"population\"]`). + * Stop inputs must be numeric literals in strictly ascending order. + * Returns the output value of the stop just less than the input, + * or the first input if the input is less than the first stop. + *

+ * Example usage: + *

+ *
+   * {@code
+   * CircleLayer circleLayer = new CircleLayer("layer-id", "source-id");
+   * circleLayer.setProperties(
+   *     circleRadius(
+   *         step(zoom(), 0.0f,
+   *         stop(1, 2.5f),
+   *         stop(10, 5.0f)
+   *     )
+   * );
+   * }
+   * 
+ * + * @param input the input value + * @param defaultOutput the default output expression + * @param stops pair of input and output values + * @return expression + * @see Style specification + */ + public static Expression step(@NonNull Expression input, @NonNull Number defaultOutput, Stop... stops) { + return step(input, defaultOutput, Stop.toExpressionArray(stops)); + } + /** * Produces continuous, smooth results by interpolating between pairs of input and output values (\"stops\"). * The `input` may be any numeric expression (e.g., `[\"get\", \"population\"]`).