[android] - add binding support for Light (#9013)
This commit is contained in:
@@ -41,6 +41,7 @@ import com.mapbox.mapboxsdk.location.LocationSource;
|
||||
import com.mapbox.mapboxsdk.maps.widgets.MyLocationViewSettings;
|
||||
import com.mapbox.mapboxsdk.style.layers.Filter;
|
||||
import com.mapbox.mapboxsdk.style.layers.Layer;
|
||||
import com.mapbox.mapboxsdk.style.light.Light;
|
||||
import com.mapbox.mapboxsdk.style.sources.Source;
|
||||
import com.mapbox.services.android.telemetry.location.LocationEngine;
|
||||
import com.mapbox.services.commons.geojson.Feature;
|
||||
@@ -567,6 +568,20 @@ public final class MapboxMap {
|
||||
return projection;
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
/**
|
||||
* Get the global light source used to change lighting conditions on extruded fill layers.
|
||||
*
|
||||
* @return the global light source
|
||||
*/
|
||||
@Nullable
|
||||
public Light getLight() {
|
||||
return nativeMapView.getLight();
|
||||
}
|
||||
|
||||
//
|
||||
// Camera API
|
||||
//
|
||||
|
||||
@@ -26,6 +26,7 @@ import com.mapbox.mapboxsdk.storage.FileSource;
|
||||
import com.mapbox.mapboxsdk.style.layers.CannotAddLayerException;
|
||||
import com.mapbox.mapboxsdk.style.layers.Filter;
|
||||
import com.mapbox.mapboxsdk.style.layers.Layer;
|
||||
import com.mapbox.mapboxsdk.style.light.Light;
|
||||
import com.mapbox.mapboxsdk.style.sources.CannotAddSourceException;
|
||||
import com.mapbox.mapboxsdk.style.sources.Source;
|
||||
import com.mapbox.services.commons.geojson.Feature;
|
||||
@@ -885,6 +886,13 @@ final class NativeMapView {
|
||||
fileSource.setApiBaseUrl(baseUrl);
|
||||
}
|
||||
|
||||
public Light getLight() {
|
||||
if (isDestroyedOn("getLight")) {
|
||||
return null;
|
||||
}
|
||||
return nativeGetLight();
|
||||
}
|
||||
|
||||
public float getPixelRatio() {
|
||||
return pixelRatio;
|
||||
}
|
||||
@@ -1120,6 +1128,8 @@ final class NativeMapView {
|
||||
String[] layerIds,
|
||||
Object[] filter);
|
||||
|
||||
private native Light nativeGetLight();
|
||||
|
||||
int getWidth() {
|
||||
if (isDestroyedOn("")) {
|
||||
return 0;
|
||||
|
||||
@@ -467,6 +467,27 @@ public final class Property {
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface FILL_EXTRUSION_TRANSLATE_ANCHOR {}
|
||||
|
||||
// ANCHOR: Whether extruded geometries are lit relative to the map or viewport.
|
||||
|
||||
/**
|
||||
* The position of the light source is aligned to the rotation of the map.
|
||||
*/
|
||||
public static final String ANCHOR_MAP = "map";
|
||||
/**
|
||||
* The position of the light source is aligned to the rotation of the viewport.
|
||||
*/
|
||||
public static final String ANCHOR_VIEWPORT = "viewport";
|
||||
|
||||
/**
|
||||
* Whether extruded geometries are lit relative to the map or viewport.
|
||||
*/
|
||||
@StringDef({
|
||||
ANCHOR_MAP,
|
||||
ANCHOR_VIEWPORT,
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface ANCHOR {}
|
||||
|
||||
|
||||
private Property() {
|
||||
}
|
||||
|
||||
@@ -0,0 +1,181 @@
|
||||
// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`.
|
||||
|
||||
package com.mapbox.mapboxsdk.style.light;
|
||||
|
||||
import android.support.annotation.ColorInt;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.UiThread;
|
||||
|
||||
import com.mapbox.mapboxsdk.style.layers.Property;
|
||||
import com.mapbox.mapboxsdk.style.layers.PropertyFactory;
|
||||
import com.mapbox.mapboxsdk.style.layers.TransitionOptions;
|
||||
|
||||
/**
|
||||
* The global light source.
|
||||
*
|
||||
* @see <a href="https://www.mapbox.com/mapbox-gl-style-spec/#light>">The online documentation</a>
|
||||
*/
|
||||
@UiThread
|
||||
public class Light {
|
||||
|
||||
private long nativePtr;
|
||||
|
||||
/**
|
||||
* Creates a Light.
|
||||
*
|
||||
* @param nativePtr pointer used by core
|
||||
*/
|
||||
public Light(long nativePtr) {
|
||||
this.nativePtr = nativePtr;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Anchor property. Whether extruded geometries are lit relative to the map or viewport.
|
||||
*
|
||||
* @param anchor as String
|
||||
*/
|
||||
public void setAnchor(@Property.ANCHOR String anchor) {
|
||||
nativeSetAnchor(anchor);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Anchor property. Whether extruded geometries are lit relative to the map or viewport.
|
||||
*
|
||||
* @return anchor as String
|
||||
*/
|
||||
@Property.ANCHOR public String getAnchor() {
|
||||
return nativeGetAnchor();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Position property. Position of the light source relative to lit (extruded) geometries, in [r radial coordinate, a azimuthal angle, p polar angle] where r indicates the distance from the center of the base of an object to its light, a indicates the position of the light relative to 0° (0° when `light.anchor` is set to `viewport` corresponds to the top of the viewport, or 0° when `light.anchor` is set to `map` corresponds to due north, and degrees proceed clockwise), and p indicates the height of the light (from 0°, directly above, to 180°, directly below).
|
||||
*
|
||||
* @param position of the light
|
||||
*/
|
||||
public void setPosition(@NonNull Position position) {
|
||||
nativeSetPosition(position);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Position property. Position of the light source relative to lit (extruded) geometries, in [r radial coordinate, a azimuthal angle, p polar angle] where r indicates the distance from the center of the base of an object to its light, a indicates the position of the light relative to 0° (0° when `light.anchor` is set to `viewport` corresponds to the top of the viewport, or 0° when `light.anchor` is set to `map` corresponds to due north, and degrees proceed clockwise), and p indicates the height of the light (from 0°, directly above, to 180°, directly below).
|
||||
*
|
||||
* @return position as Position
|
||||
*/
|
||||
public Position getPosition() {
|
||||
return nativeGetPosition();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Position property transition options.
|
||||
*
|
||||
* @return transition options for position
|
||||
*/
|
||||
public TransitionOptions getPositionTransition() {
|
||||
return nativeGetPositionTransition();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Position property transition options.
|
||||
*
|
||||
* @param options transition options for position
|
||||
*/
|
||||
public void setPositionTransition(TransitionOptions options) {
|
||||
nativeSetPositionTransition(options.getDuration(), options.getDelay());
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Color property. Color tint for lighting extruded geometries.
|
||||
*
|
||||
* @param color as int
|
||||
*/
|
||||
public void setColor(@ColorInt int color) {
|
||||
nativeSetColor(PropertyFactory.colorToRgbaString(color));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Color property. Color tint for lighting extruded geometries.
|
||||
*
|
||||
* @param color as String
|
||||
*/
|
||||
public void setColor(String color) {
|
||||
nativeSetColor(color);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Color property. Color tint for lighting extruded geometries.
|
||||
*
|
||||
* @return color as String
|
||||
*/
|
||||
public String getColor() {
|
||||
return nativeGetColor();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Color property transition options.
|
||||
*
|
||||
* @return transition options for color
|
||||
*/
|
||||
public TransitionOptions getColorTransition() {
|
||||
return nativeGetColorTransition();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Color property transition options.
|
||||
*
|
||||
* @param options transition options for color
|
||||
*/
|
||||
public void setColorTransition(TransitionOptions options) {
|
||||
nativeSetColorTransition(options.getDuration(), options.getDelay());
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Intensity property. Intensity of lighting (on a scale from 0 to 1). Higher numbers will present as more extreme contrast.
|
||||
*
|
||||
* @param intensity as Float
|
||||
*/
|
||||
public void setIntensity(float intensity) {
|
||||
nativeSetIntensity(intensity);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Intensity property. Intensity of lighting (on a scale from 0 to 1). Higher numbers will present as more extreme contrast.
|
||||
*
|
||||
* @return intensity as Float
|
||||
*/
|
||||
public float getIntensity() {
|
||||
return nativeGetIntensity();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Intensity property transition options.
|
||||
*
|
||||
* @return transition options for intensity
|
||||
*/
|
||||
public TransitionOptions getIntensityTransition() {
|
||||
return nativeGetIntensityTransition();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Intensity property transition options.
|
||||
*
|
||||
* @param options transition options for intensity
|
||||
*/
|
||||
public void setIntensityTransition(TransitionOptions options) {
|
||||
nativeSetIntensityTransition(options.getDuration(), options.getDelay());
|
||||
}
|
||||
|
||||
private native void nativeSetAnchor(String anchor);
|
||||
private native String nativeGetAnchor();
|
||||
private native void nativeSetPosition(Position position);
|
||||
private native Position nativeGetPosition();
|
||||
private native TransitionOptions nativeGetPositionTransition();
|
||||
private native void nativeSetPositionTransition(long duration, long delay);
|
||||
private native void nativeSetColor(String color);
|
||||
private native String nativeGetColor();
|
||||
private native TransitionOptions nativeGetColorTransition();
|
||||
private native void nativeSetColorTransition(long duration, long delay);
|
||||
private native void nativeSetIntensity(float intensity);
|
||||
private native float nativeGetIntensity();
|
||||
private native TransitionOptions nativeGetIntensityTransition();
|
||||
private native void nativeSetIntensityTransition(long duration, long delay);
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.mapbox.mapboxsdk.style.light;
|
||||
|
||||
/**
|
||||
* Position of the light source relative to lit (extruded) geometries.
|
||||
* <p>
|
||||
* The position is constructed out of a radial coordinate, an azimuthal angle and a polar angle.
|
||||
* where the radial coordinate indicates the distance from the center of the base of an object to its light, the
|
||||
* azimuthal angle indicates the position of the light relative to 0° (0° when
|
||||
* {@link com.mapbox.mapboxsdk.style.layers.Property.ANCHOR} is set to viewport corresponds to the top of the
|
||||
* viewport, or 0° when {@link com.mapbox.mapboxsdk.style.layers.Property.ANCHOR} is set to map corresponds to due
|
||||
* north, and degrees proceed clockwise), and polar indicates the height of the light
|
||||
* (from 0°, directly above, to 180°, directly below).
|
||||
*/
|
||||
public class Position {
|
||||
|
||||
private float radialCoordinate;
|
||||
private float azimuthalAngle;
|
||||
private float polarAngle;
|
||||
|
||||
/**
|
||||
* Creates a Position from a radial coordinate, an azimuthal angle & a polar angle.
|
||||
*
|
||||
* @param radialCoordinate the distance from the center of the base of an object to its light
|
||||
* @param azimuthalAngle the position of the light relative to 0°
|
||||
* @param polarAngle the height of the light
|
||||
*/
|
||||
public Position(float radialCoordinate, float azimuthalAngle, float polarAngle) {
|
||||
this.radialCoordinate = radialCoordinate;
|
||||
this.azimuthalAngle = azimuthalAngle;
|
||||
this.polarAngle = polarAngle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a Position from a radial coordinate, an azimuthal angle & a polar angle
|
||||
*
|
||||
* @param radialCoordinate the radial coordinate
|
||||
* @param azimuthalAngle the azimuthal angle
|
||||
* @param polarAngle the polar angle
|
||||
* @return the created Position object
|
||||
*/
|
||||
public static Position fromPosition(float radialCoordinate, float azimuthalAngle, float polarAngle) {
|
||||
return new Position(radialCoordinate, azimuthalAngle, polarAngle);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Position position = (Position) o;
|
||||
|
||||
if (Float.compare(position.radialCoordinate, radialCoordinate) != 0) {
|
||||
return false;
|
||||
}
|
||||
if (Float.compare(position.azimuthalAngle, azimuthalAngle) != 0) {
|
||||
return false;
|
||||
}
|
||||
return Float.compare(position.polarAngle, polarAngle) == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = (radialCoordinate != +0.0f ? Float.floatToIntBits(radialCoordinate) : 0);
|
||||
result = 31 * result + (azimuthalAngle != +0.0f ? Float.floatToIntBits(azimuthalAngle) : 0);
|
||||
result = 31 * result + (polarAngle != +0.0f ? Float.floatToIntBits(polarAngle) : 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Position{"
|
||||
+ "radialCoordinate=" + radialCoordinate
|
||||
+ ", azimuthalAngle=" + azimuthalAngle
|
||||
+ ", polarAngle=" + polarAngle
|
||||
+ '}';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
<%
|
||||
const properties = locals.properties;
|
||||
const doc = locals.doc;
|
||||
-%>
|
||||
// This file is generated. Edit android/platform/scripts/generate-style-code.js, then run `make android-style-code`.
|
||||
|
||||
package com.mapbox.mapboxsdk.style.light;
|
||||
|
||||
import android.support.annotation.ColorInt;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.UiThread;
|
||||
|
||||
import com.mapbox.mapboxsdk.style.layers.Property;
|
||||
import com.mapbox.mapboxsdk.style.layers.PropertyFactory;
|
||||
import com.mapbox.mapboxsdk.style.layers.TransitionOptions;
|
||||
|
||||
/**
|
||||
* The global light source.
|
||||
*
|
||||
* @see <a href="https://www.mapbox.com/mapbox-gl-style-spec/#light>">The online documentation</a>
|
||||
*/
|
||||
@UiThread
|
||||
public class Light {
|
||||
|
||||
private long nativePtr;
|
||||
|
||||
/**
|
||||
* Creates a Light.
|
||||
*
|
||||
* @param nativePtr pointer used by core
|
||||
*/
|
||||
public Light(long nativePtr) {
|
||||
this.nativePtr = nativePtr;
|
||||
}
|
||||
<% for (const property of properties) { -%>
|
||||
<% if (property.name == "position") {-%>
|
||||
|
||||
/**
|
||||
* Set the <%- camelize(property.name) %> property. <%- property.doc %>
|
||||
*
|
||||
* @param position of the light
|
||||
*/
|
||||
public void set<%- camelize(property.name) %>(@NonNull Position position) {
|
||||
nativeSet<%- camelize(property.name) %>(position);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the <%- camelize(property.name) %> property. <%- property.doc %>
|
||||
*
|
||||
* @return <%- property.name %> as Position
|
||||
*/
|
||||
public Position get<%- camelize(property.name) %>() {
|
||||
return nativeGet<%- camelize(property.name) %>();
|
||||
}
|
||||
<% } else { -%>
|
||||
<% if (property.name == "color") {-%>
|
||||
|
||||
/**
|
||||
* Set the <%- camelize(property.name) %> property. <%- property.doc %>
|
||||
*
|
||||
* @param <%- property.name %> as int
|
||||
*/
|
||||
public void set<%- camelize(property.name) %>(@ColorInt int <%- property.name %>) {
|
||||
nativeSet<%- camelize(property.name) %>(PropertyFactory.colorToRgbaString(<%- property.name %>));
|
||||
}
|
||||
<% } -%>
|
||||
|
||||
/**
|
||||
* Set the <%- camelize(property.name) %> property. <%- property.doc %>
|
||||
*
|
||||
* @param <%- property.name %> as <%- propertyType(property) %>
|
||||
*/
|
||||
public void set<%- camelize(property.name) %>(<%- propertyTypeAnnotation(property) %><%- iff(() => propertyTypeAnnotation(property), " ") %><%- propertyJavaType(property) %> <%- property.name %>) {
|
||||
nativeSet<%- camelize(property.name) %>(<%- property.name %>);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the <%- camelize(property.name) %> property. <%- property.doc %>
|
||||
*
|
||||
* @return <%- property.name %> as <%- propertyType(property) %>
|
||||
*/
|
||||
<%- propertyTypeAnnotation(property) %> public <%- propertyJavaType(property) %> get<%- camelize(property.name) %>() {
|
||||
return nativeGet<%- camelize(property.name) %>();
|
||||
}
|
||||
<% } -%>
|
||||
<% if (property.transition) { -%>
|
||||
|
||||
/**
|
||||
* Get the <%- camelize(property.name) %> property transition options.
|
||||
*
|
||||
* @return transition options for <%- property.name %>
|
||||
*/
|
||||
public TransitionOptions get<%- camelize(property.name) %>Transition() {
|
||||
return nativeGet<%- camelize(property.name) %>Transition();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the <%- camelize(property.name) %> property transition options.
|
||||
*
|
||||
* @param options transition options for <%- property.name %>
|
||||
*/
|
||||
public void set<%- camelize(property.name) %>Transition(TransitionOptions options) {
|
||||
nativeSet<%- camelize(property.name) %>Transition(options.getDuration(), options.getDelay());
|
||||
}
|
||||
<% } -%>
|
||||
<% } -%>
|
||||
|
||||
<% for (const property of properties) { -%>
|
||||
<% if (property.name == "position") {-%>
|
||||
private native void nativeSet<%- camelize(property.name) %>(Position position);
|
||||
private native Position nativeGet<%- camelize(property.name) %>();
|
||||
<% } else { -%>
|
||||
private native void nativeSet<%- camelize(property.name) %>(<%- propertyJavaType(property) -%> <%- property.name %>);
|
||||
private native <%- propertyJavaType(property) -%> nativeGet<%- camelize(property.name) %>();
|
||||
<% } -%>
|
||||
<% if (property.transition) { -%>
|
||||
private native TransitionOptions nativeGet<%- camelize(property.name) %>Transition();
|
||||
private native void nativeSet<%- camelize(property.name) %>Transition(long duration, long delay);
|
||||
<% } -%>
|
||||
<% } -%>
|
||||
}
|
||||
Reference in New Issue
Block a user