From 7974a61476e9f494076fad1f8ee8f6df0a87c83c Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 15 Jan 2016 19:06:27 +0000 Subject: [PATCH] Fix TtmlColorParser test. Also simplify the implementation slightly. --- .../exoplayer/text/ttml/TtmlColorParserTest.java | 10 ++++++---- .../android/exoplayer/text/ttml/TtmlColorParser.java | 7 ++----- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/library/src/androidTest/java/com/google/android/exoplayer/text/ttml/TtmlColorParserTest.java b/library/src/androidTest/java/com/google/android/exoplayer/text/ttml/TtmlColorParserTest.java index 922b054011..dec5c9c93f 100644 --- a/library/src/androidTest/java/com/google/android/exoplayer/text/ttml/TtmlColorParserTest.java +++ b/library/src/androidTest/java/com/google/android/exoplayer/text/ttml/TtmlColorParserTest.java @@ -24,10 +24,12 @@ import android.test.InstrumentationTestCase; public class TtmlColorParserTest extends InstrumentationTestCase { public void testHexCodeParsing() { - assertEquals(Color.WHITE, TtmlColorParser.parseColor("#ffffff")); - assertEquals(Color.WHITE, TtmlColorParser.parseColor("#ffffffff")); - assertEquals(Color.parseColor("#00ffffff"), TtmlColorParser.parseColor("#00ffffff")); - assertEquals(Color.parseColor("#12341234"), TtmlColorParser.parseColor("#12341234")); + assertEquals(Color.WHITE, TtmlColorParser.parseColor("#FFFFFF")); + assertEquals(Color.WHITE, TtmlColorParser.parseColor("#FFFFFFFF")); + assertEquals(Color.parseColor("#FF123456"), TtmlColorParser.parseColor("#123456")); + // Hex colors in TTML are RGBA, where-as {@link Color#parseColor} takes ARGB. + assertEquals(Color.parseColor("#00FFFFFF"), TtmlColorParser.parseColor("#FFFFFF00")); + assertEquals(Color.parseColor("#78123456"), TtmlColorParser.parseColor("#12345678")); } public void testColorNameParsing() { diff --git a/library/src/main/java/com/google/android/exoplayer/text/ttml/TtmlColorParser.java b/library/src/main/java/com/google/android/exoplayer/text/ttml/TtmlColorParser.java index dabb18bdae..d7c987fb7f 100644 --- a/library/src/main/java/com/google/android/exoplayer/text/ttml/TtmlColorParser.java +++ b/library/src/main/java/com/google/android/exoplayer/text/ttml/TtmlColorParser.java @@ -40,7 +40,6 @@ import java.util.regex.Pattern; private static final Pattern RGBA_PATTERN = Pattern.compile( "^rgba\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)$"); - static final int TRANSPARENT = 0x00000000; static final int BLACK = 0xFF000000; static final int SILVER = 0xFFC0C0C0; @@ -93,12 +92,10 @@ import java.util.regex.Pattern; long color = Long.parseLong(colorExpression.substring(1), 16); if (colorExpression.length() == 7) { // Set the alpha value - color |= 0x00000000FF000000; + color |= 0xFF000000L; } else if (colorExpression.length() == 9) { // We have #RRGGBBAA, but we need #AARRGGBB - int alpha = (int) color & 0x00000000000000FF; - color >>= 8; - color |= alpha << 24; + color = ((color & 0xFF) << 24) | (color >> 8); } else { throw new IllegalArgumentException(); }