You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
copy Color.parseColor() from AOSP
This commit is contained in:
@@ -1,6 +1,38 @@
|
||||
/*
|
||||
* Copyright (C) 2006 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package android.graphics;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
|
||||
public class Color {
|
||||
public static final int BLACK = 0xFF000000;
|
||||
public static final int DKGRAY = 0xFF444444;
|
||||
public static final int GRAY = 0xFF888888;
|
||||
public static final int LTGRAY = 0xFFCCCCCC;
|
||||
public static final int WHITE = 0xFFFFFFFF;
|
||||
public static final int RED = 0xFFFF0000;
|
||||
public static final int GREEN = 0xFF00FF00;
|
||||
public static final int BLUE = 0xFF0000FF;
|
||||
public static final int YELLOW = 0xFFFFFF00;
|
||||
public static final int CYAN = 0xFF00FFFF;
|
||||
public static final int MAGENTA = 0xFFFF00FF;
|
||||
public static final int TRANSPARENT = 0;
|
||||
|
||||
public static int argb(int alpha, int red, int green, int blue) {
|
||||
return (alpha << 24) | (red << 16) | (green << 8) | (blue << 0);
|
||||
}
|
||||
@@ -12,4 +44,63 @@ public class Color {
|
||||
public static int alpha(int color) {
|
||||
return color >>> 24;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse the color string, and return the corresponding color-int.
|
||||
* If the string cannot be parsed, throws an IllegalArgumentException
|
||||
* exception. Supported formats are:
|
||||
* #RRGGBB
|
||||
* #AARRGGBB
|
||||
* 'red', 'blue', 'green', 'black', 'white', 'gray', 'cyan', 'magenta',
|
||||
* 'yellow', 'lightgray', 'darkgray', 'grey', 'lightgrey', 'darkgrey',
|
||||
* 'aqua', 'fuschia', 'lime', 'maroon', 'navy', 'olive', 'purple',
|
||||
* 'silver', 'teal'
|
||||
*/
|
||||
public static int parseColor(String colorString) {
|
||||
if (colorString.charAt(0) == '#') {
|
||||
// Use a long to avoid rollovers on #ffXXXXXX
|
||||
long color = Long.parseLong(colorString.substring(1), 16);
|
||||
if (colorString.length() == 7) {
|
||||
// Set the alpha value
|
||||
color |= 0x00000000ff000000;
|
||||
} else if (colorString.length() != 9) {
|
||||
throw new IllegalArgumentException("Unknown color");
|
||||
}
|
||||
return (int)color;
|
||||
} else {
|
||||
Integer color = sColorNameMap.get(colorString.toLowerCase(Locale.ROOT));
|
||||
if (color != null) {
|
||||
return color;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException("Unknown color");
|
||||
}
|
||||
|
||||
private static final HashMap<String, Integer> sColorNameMap;
|
||||
static {
|
||||
sColorNameMap = new HashMap<String, Integer>();
|
||||
sColorNameMap.put("black", BLACK);
|
||||
sColorNameMap.put("darkgray", DKGRAY);
|
||||
sColorNameMap.put("gray", GRAY);
|
||||
sColorNameMap.put("lightgray", LTGRAY);
|
||||
sColorNameMap.put("white", WHITE);
|
||||
sColorNameMap.put("red", RED);
|
||||
sColorNameMap.put("green", GREEN);
|
||||
sColorNameMap.put("blue", BLUE);
|
||||
sColorNameMap.put("yellow", YELLOW);
|
||||
sColorNameMap.put("cyan", CYAN);
|
||||
sColorNameMap.put("magenta", MAGENTA);
|
||||
sColorNameMap.put("aqua", 0x00FFFF);
|
||||
sColorNameMap.put("fuchsia", 0xFF00FF);
|
||||
sColorNameMap.put("darkgrey", DKGRAY);
|
||||
sColorNameMap.put("grey", GRAY);
|
||||
sColorNameMap.put("lightgrey", LTGRAY);
|
||||
sColorNameMap.put("lime", 0x00FF00);
|
||||
sColorNameMap.put("maroon", 0x800000);
|
||||
sColorNameMap.put("navy", 0x000080);
|
||||
sColorNameMap.put("olive", 0x808000);
|
||||
sColorNameMap.put("purple", 0x800080);
|
||||
sColorNameMap.put("silver", 0xC0C0C0);
|
||||
sColorNameMap.put("teal", 0x008080);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user