Commit c60dac7c by Oliver Woodman

Further tweaks to TTML color parsing.

parent 7974a614
...@@ -88,18 +88,18 @@ import java.util.regex.Pattern; ...@@ -88,18 +88,18 @@ import java.util.regex.Pattern;
Assertions.checkArgument(!TextUtils.isEmpty(colorExpression)); Assertions.checkArgument(!TextUtils.isEmpty(colorExpression));
colorExpression = colorExpression.replace(" ", ""); colorExpression = colorExpression.replace(" ", "");
if (colorExpression.charAt(0) == '#') { if (colorExpression.charAt(0) == '#') {
// Use a long to avoid rollovers on #FFXXXXXX // Parse using Long to avoid failure when the unsigned value exceeds (2^31 - 1).
long color = Long.parseLong(colorExpression.substring(1), 16); int color = (int) Long.parseLong(colorExpression.substring(1), 16);
if (colorExpression.length() == 7) { if (colorExpression.length() == 7) {
// Set the alpha value // Set the alpha value
color |= 0xFF000000L; color |= 0xFF000000;
} else if (colorExpression.length() == 9) { } else if (colorExpression.length() == 9) {
// We have #RRGGBBAA, but we need #AARRGGBB // We have #RRGGBBAA, but we need #AARRGGBB
color = ((color & 0xFF) << 24) | (color >> 8); color = ((color & 0xFF) << 24) | (color >>> 8);
} else { } else {
throw new IllegalArgumentException(); throw new IllegalArgumentException();
} }
return (int) color; return color;
} else if (colorExpression.startsWith(RGBA)) { } else if (colorExpression.startsWith(RGBA)) {
Matcher matcher = RGBA_PATTERN.matcher(colorExpression); Matcher matcher = RGBA_PATTERN.matcher(colorExpression);
if (matcher.matches()) { if (matcher.matches()) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment