| Index: src/effects/SkColorMatrixFilter.cpp
|
| diff --git a/src/effects/SkColorMatrixFilter.cpp b/src/effects/SkColorMatrixFilter.cpp
|
| index 6b925710c96bcc88ca004b76beaee24cd3abed88..bb85485050813e776aa1ecd6489819cbc5aef79c 100644
|
| --- a/src/effects/SkColorMatrixFilter.cpp
|
| +++ b/src/effects/SkColorMatrixFilter.cpp
|
| @@ -76,9 +76,9 @@ static void ScaleAdd(const SkColorMatrixFilter::State& state,
|
| const int shift = state.fShift;
|
|
|
| // cast to (int) to keep the expression signed for the shift
|
| - result[0] = (array[0] * (int)r + array[4]) >> shift;
|
| - result[1] = (array[6] * (int)g + array[9]) >> shift;
|
| - result[2] = (array[12] * (int)b + array[14]) >> shift;
|
| + result[0] = (array[SkColorMatrix::kR_Scale] * (int)r + array[4]) >> shift;
|
| + result[1] = (array[SkColorMatrix::kG_Scale] * (int)g + array[9]) >> shift;
|
| + result[2] = (array[SkColorMatrix::kB_Scale] * (int)b + array[14]) >> shift;
|
| result[3] = a;
|
| }
|
|
|
| @@ -88,9 +88,9 @@ static void ScaleAdd16(const SkColorMatrixFilter::State& state,
|
| const int32_t* SK_RESTRICT array = state.fArray;
|
|
|
| // cast to (int) to keep the expression signed for the shift
|
| - result[0] = (array[0] * (int)r + array[4]) >> 16;
|
| - result[1] = (array[6] * (int)g + array[9]) >> 16;
|
| - result[2] = (array[12] * (int)b + array[14]) >> 16;
|
| + result[0] = (array[SkColorMatrix::kR_Scale] * (int)r + array[4]) >> 16;
|
| + result[1] = (array[SkColorMatrix::kG_Scale] * (int)g + array[9]) >> 16;
|
| + result[2] = (array[SkColorMatrix::kB_Scale] * (int)b + array[14]) >> 16;
|
| result[3] = a;
|
| }
|
|
|
| @@ -100,9 +100,9 @@ static void Add(const SkColorMatrixFilter::State& state,
|
| const int32_t* SK_RESTRICT array = state.fArray;
|
| const int shift = state.fShift;
|
|
|
| - result[0] = r + (array[4] >> shift);
|
| - result[1] = g + (array[9] >> shift);
|
| - result[2] = b + (array[14] >> shift);
|
| + result[0] = r + (array[SkColorMatrix::kR_Trans] >> shift);
|
| + result[1] = g + (array[SkColorMatrix::kG_Trans] >> shift);
|
| + result[2] = b + (array[SkColorMatrix::kB_Trans] >> shift);
|
| result[3] = a;
|
| }
|
|
|
| @@ -111,9 +111,9 @@ static void Add16(const SkColorMatrixFilter::State& state,
|
| int32_t* SK_RESTRICT result) {
|
| const int32_t* SK_RESTRICT array = state.fArray;
|
|
|
| - result[0] = r + (array[4] >> 16);
|
| - result[1] = g + (array[9] >> 16);
|
| - result[2] = b + (array[14] >> 16);
|
| + result[0] = r + (array[SkColorMatrix::kR_Trans] >> 16);
|
| + result[1] = g + (array[SkColorMatrix::kG_Trans] >> 16);
|
| + result[2] = b + (array[SkColorMatrix::kB_Trans] >> 16);
|
| result[3] = a;
|
| }
|
|
|
| @@ -161,9 +161,9 @@ void SkColorMatrixFilter::initState(const SkScalar* SK_RESTRICT src) {
|
| } else {
|
| fFlags = kNO_ALPHA_FLAGS;
|
|
|
| - int32_t needsScale = (array[0] - one) | // red axis
|
| - (array[6] - one) | // green axis
|
| - (array[12] - one); // blue axis
|
| + int32_t needsScale = (array[SkColorMatrix::kR_Scale] - one) |
|
| + (array[SkColorMatrix::kG_Scale] - one) |
|
| + (array[SkColorMatrix::kB_Scale] - one);
|
|
|
| int32_t needs3x3 = array[1] | array[2] | // red off-axis
|
| array[5] | array[7] | // green off-axis
|
| @@ -173,7 +173,9 @@ void SkColorMatrixFilter::initState(const SkScalar* SK_RESTRICT src) {
|
| fProc = shiftIs16 ? AffineAdd16 : AffineAdd;
|
| } else if (needsScale) {
|
| fProc = shiftIs16 ? ScaleAdd16 : ScaleAdd;
|
| - } else if (array[4] | array[9] | array[14]) { // needs add
|
| + } else if (array[SkColorMatrix::kR_Trans] |
|
| + array[SkColorMatrix::kG_Trans] |
|
| + array[SkColorMatrix::kB_Trans]) {
|
| fProc = shiftIs16 ? Add16 : Add;
|
| } else {
|
| fProc = NULL; // identity
|
|
|