use new non-255 colormatrix

also use new naming convention for asAColorMode

Test: make

Change-Id: I32ddaf6d2d0ce9b0f29ee32e866879884fc926b4
This commit is contained in:
Mike Reed
2019-04-26 09:22:13 -04:00
parent 2f89e306ae
commit 2ee3743456
4 changed files with 11 additions and 12 deletions

View File

@@ -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());
}
};

View File

@@ -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));
}

View File

@@ -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);

View File

@@ -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));
}
}