summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mike Reed <reed@google.com> 2019-04-26 09:22:13 -0400
committer Mike Reed <reed@google.com> 2019-04-29 13:10:54 +0000
commit2ee3743456f4f9c0d8eb28331be462fd0e06fe05 (patch)
tree91fd08d2a613d9bf6278c2f62a7db29ec65f293c
parent2f89e306aec95250b00af3b518d441fb98441622 (diff)
use new non-255 colormatrix
also use new naming convention for asAColorMode Test: make Change-Id: I32ddaf6d2d0ce9b0f29ee32e866879884fc926b4
-rw-r--r--core/jni/android/graphics/ColorFilter.cpp16
-rw-r--r--libs/hwui/CanvasTransform.cpp2
-rw-r--r--libs/hwui/tests/common/scenes/SimpleColorMatrixAnimation.cpp1
-rw-r--r--libs/hwui/tests/unit/SkiaBehaviorTests.cpp4
4 files changed, 11 insertions, 12 deletions
diff --git a/core/jni/android/graphics/ColorFilter.cpp b/core/jni/android/graphics/ColorFilter.cpp
index c0fc28ab7830..164d35f46a47 100644
--- a/core/jni/android/graphics/ColorFilter.cpp
+++ b/core/jni/android/graphics/ColorFilter.cpp
@@ -46,14 +46,14 @@ public:
}
static jlong CreateColorMatrixFilter(JNIEnv* env, jobject, jfloatArray jarray) {
- AutoJavaFloatArray autoArray(env, jarray, 20);
- const float* src = autoArray.ptr();
-
-#ifdef SK_SCALAR_IS_FLOAT
- return reinterpret_cast<jlong>(SkColorFilters::MatrixRowMajor255(src).release());
-#else
- SkASSERT(false);
-#endif
+ float matrix[20];
+ env->GetFloatArrayRegion(jarray, 0, 20, matrix);
+ // java biases the translates by 255, so undo that before calling skia
+ matrix[ 4] *= (1.0f/255);
+ matrix[ 9] *= (1.0f/255);
+ matrix[14] *= (1.0f/255);
+ matrix[19] *= (1.0f/255);
+ return reinterpret_cast<jlong>(SkColorFilters::Matrix(matrix).release());
}
};
diff --git a/libs/hwui/CanvasTransform.cpp b/libs/hwui/CanvasTransform.cpp
index 83e02b9e8c77..8c37d73366c2 100644
--- a/libs/hwui/CanvasTransform.cpp
+++ b/libs/hwui/CanvasTransform.cpp
@@ -100,7 +100,7 @@ static void applyColorTransform(ColorTransform transform, SkPaint& paint) {
SkBlendMode mode;
SkColor color;
// TODO: LRU this or something to avoid spamming new color mode filters
- if (paint.getColorFilter()->asColorMode(&color, &mode)) {
+ if (paint.getColorFilter()->asAColorMode(&color, &mode)) {
color = transformColor(transform, color);
paint.setColorFilter(SkColorFilters::Blend(color, mode));
}
diff --git a/libs/hwui/tests/common/scenes/SimpleColorMatrixAnimation.cpp b/libs/hwui/tests/common/scenes/SimpleColorMatrixAnimation.cpp
index c899a3c8cfc6..06205f67f20a 100644
--- a/libs/hwui/tests/common/scenes/SimpleColorMatrixAnimation.cpp
+++ b/libs/hwui/tests/common/scenes/SimpleColorMatrixAnimation.cpp
@@ -53,7 +53,6 @@ private:
x, y, x + width, y + height,
[width, height](RenderProperties& props, Canvas& canvas) {
SkPaint paint;
-
// Simple scale/translate case where R, G, and B are all treated equivalently
SkColorMatrix cm;
cm.setScale(1.1f, 1.1f, 1.1f, 0.5f);
diff --git a/libs/hwui/tests/unit/SkiaBehaviorTests.cpp b/libs/hwui/tests/unit/SkiaBehaviorTests.cpp
index df5f45618070..7951537e1525 100644
--- a/libs/hwui/tests/unit/SkiaBehaviorTests.cpp
+++ b/libs/hwui/tests/unit/SkiaBehaviorTests.cpp
@@ -48,14 +48,14 @@ TEST(SkiaBehavior, lightingColorFilter_simplify) {
SkColor observedColor;
SkBlendMode observedMode;
- ASSERT_TRUE(filter->asColorMode(&observedColor, &observedMode));
+ ASSERT_TRUE(filter->asAColorMode(&observedColor, &observedMode));
EXPECT_EQ(0xFF223344, observedColor);
EXPECT_EQ(SkBlendMode::kModulate, observedMode);
}
{
sk_sp<SkColorFilter> failFilter(SkColorMatrixFilter::MakeLightingFilter(0x11223344, 0x1));
- EXPECT_FALSE(failFilter->asColorMode(nullptr, nullptr));
+ EXPECT_FALSE(failFilter->asAColorMode(nullptr, nullptr));
}
}