blob: 68727c8a4fc860854b0061ed8f503f811ce4a984 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
package com.mapbox.mapboxsdk.style.layers;
import android.support.annotation.ColorInt;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.mapbox.mapboxsdk.exceptions.ConversionException;
import com.mapbox.mapboxsdk.style.functions.Function;
import com.mapbox.mapboxsdk.utils.ColorUtils;
import timber.log.Timber;
/**
* Properties for Layer
*/
public class PropertyValue<T> {
public final String name;
public final T value;
/**
* Not part of the public API.
*
* @param name the property name
* @param value the property value
* @see PropertyFactory for construction of {@link PropertyValue}s
*/
public PropertyValue(@NonNull String name, T value) {
this.name = name;
this.value = value;
}
public boolean isNull() {
return value == null;
}
public boolean isFunction() {
return !isNull() && value instanceof Function;
}
public boolean isValue() {
return !isNull() && !isFunction();
}
@Nullable
public Function<?, T> getFunction() {
if (isFunction()) {
// noinspection unchecked
return (Function<?, T>) value;
} else {
Timber.w("not a function, try value");
return null;
}
}
@Nullable
public T getValue() {
if (isValue()) {
// noinspection unchecked
return (T) value;
} else {
Timber.w("not a value, try function");
return null;
}
}
@ColorInt
@Nullable
public Integer getColorInt() {
if (!isValue() || !(value instanceof String)) {
Timber.e("%s is not a String value and can not be converted to a color it", name);
return null;
}
try {
return ColorUtils.rgbaToColor((String) value);
} catch (ConversionException ex) {
Timber.e("%s could not be converted to a Color int: %s", name, ex.getMessage());
return null;
}
}
@Override
public String toString() {
return String.format("%s: %s", name, value);
}
}
|