| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 #include "SkColorMatrix.h" | 8 #include "SkColorMatrix.h" |
| 9 #include "SkFlattenableBuffers.h" | 9 #include "SkFlattenableBuffers.h" |
| 10 | 10 |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 } | 101 } |
| 102 | 102 |
| 103 /////////////////////////////////////////////////////////////////////////////// | 103 /////////////////////////////////////////////////////////////////////////////// |
| 104 | 104 |
| 105 static void setrow(SkScalar row[], SkScalar r, SkScalar g, SkScalar b) { | 105 static void setrow(SkScalar row[], SkScalar r, SkScalar g, SkScalar b) { |
| 106 row[0] = r; | 106 row[0] = r; |
| 107 row[1] = g; | 107 row[1] = g; |
| 108 row[2] = b; | 108 row[2] = b; |
| 109 } | 109 } |
| 110 | 110 |
| 111 static const SkScalar kHueR = SkFloatToScalar(0.213f); | 111 static const SkScalar kHueR = 0.213f; |
| 112 static const SkScalar kHueG = SkFloatToScalar(0.715f); | 112 static const SkScalar kHueG = 0.715f; |
| 113 static const SkScalar kHueB = SkFloatToScalar(0.072f); | 113 static const SkScalar kHueB = 0.072f; |
| 114 | 114 |
| 115 void SkColorMatrix::setSaturation(SkScalar sat) { | 115 void SkColorMatrix::setSaturation(SkScalar sat) { |
| 116 memset(fMat, 0, sizeof(fMat)); | 116 memset(fMat, 0, sizeof(fMat)); |
| 117 | 117 |
| 118 const SkScalar R = SkScalarMul(kHueR, SK_Scalar1 - sat); | 118 const SkScalar R = SkScalarMul(kHueR, SK_Scalar1 - sat); |
| 119 const SkScalar G = SkScalarMul(kHueG, SK_Scalar1 - sat); | 119 const SkScalar G = SkScalarMul(kHueG, SK_Scalar1 - sat); |
| 120 const SkScalar B = SkScalarMul(kHueB, SK_Scalar1 - sat); | 120 const SkScalar B = SkScalarMul(kHueB, SK_Scalar1 - sat); |
| 121 | 121 |
| 122 setrow(fMat + 0, R + sat, G, B); | 122 setrow(fMat + 0, R + sat, G, B); |
| 123 setrow(fMat + 5, R, G + sat, B); | 123 setrow(fMat + 5, R, G + sat, B); |
| 124 setrow(fMat + 10, R, G, B + sat); | 124 setrow(fMat + 10, R, G, B + sat); |
| 125 fMat[18] = SK_Scalar1; | 125 fMat[18] = SK_Scalar1; |
| 126 } | 126 } |
| 127 | 127 |
| 128 static const SkScalar kR2Y = SkFloatToScalar(0.299f); | 128 static const SkScalar kR2Y = 0.299f; |
| 129 static const SkScalar kG2Y = SkFloatToScalar(0.587f); | 129 static const SkScalar kG2Y = 0.587f; |
| 130 static const SkScalar kB2Y = SkFloatToScalar(0.114f); | 130 static const SkScalar kB2Y = 0.114f; |
| 131 | 131 |
| 132 static const SkScalar kR2U = SkFloatToScalar(-0.16874f); | 132 static const SkScalar kR2U = -0.16874f; |
| 133 static const SkScalar kG2U = SkFloatToScalar(-0.33126f); | 133 static const SkScalar kG2U = -0.33126f; |
| 134 static const SkScalar kB2U = SkFloatToScalar(0.5f); | 134 static const SkScalar kB2U = 0.5f; |
| 135 | 135 |
| 136 static const SkScalar kR2V = SkFloatToScalar(0.5f); | 136 static const SkScalar kR2V = 0.5f; |
| 137 static const SkScalar kG2V = SkFloatToScalar(-0.41869f); | 137 static const SkScalar kG2V = -0.41869f; |
| 138 static const SkScalar kB2V = SkFloatToScalar(-0.08131f); | 138 static const SkScalar kB2V = -0.08131f; |
| 139 | 139 |
| 140 void SkColorMatrix::setRGB2YUV() { | 140 void SkColorMatrix::setRGB2YUV() { |
| 141 memset(fMat, 0, sizeof(fMat)); | 141 memset(fMat, 0, sizeof(fMat)); |
| 142 | 142 |
| 143 setrow(fMat + 0, kR2Y, kG2Y, kB2Y); | 143 setrow(fMat + 0, kR2Y, kG2Y, kB2Y); |
| 144 setrow(fMat + 5, kR2U, kG2U, kB2U); | 144 setrow(fMat + 5, kR2U, kG2U, kB2U); |
| 145 setrow(fMat + 10, kR2V, kG2V, kB2V); | 145 setrow(fMat + 10, kR2V, kG2V, kB2V); |
| 146 fMat[18] = SK_Scalar1; | 146 fMat[18] = SK_Scalar1; |
| 147 } | 147 } |
| 148 | 148 |
| 149 static const SkScalar kV2R = SkFloatToScalar(1.402f); | 149 static const SkScalar kV2R = 1.402f; |
| 150 static const SkScalar kU2G = SkFloatToScalar(-0.34414f); | 150 static const SkScalar kU2G = -0.34414f; |
| 151 static const SkScalar kV2G = SkFloatToScalar(-0.71414f); | 151 static const SkScalar kV2G = -0.71414f; |
| 152 static const SkScalar kU2B = SkFloatToScalar(1.772f); | 152 static const SkScalar kU2B = 1.772f; |
| 153 | 153 |
| 154 void SkColorMatrix::setYUV2RGB() { | 154 void SkColorMatrix::setYUV2RGB() { |
| 155 memset(fMat, 0, sizeof(fMat)); | 155 memset(fMat, 0, sizeof(fMat)); |
| 156 | 156 |
| 157 setrow(fMat + 0, SK_Scalar1, 0, kV2R); | 157 setrow(fMat + 0, SK_Scalar1, 0, kV2R); |
| 158 setrow(fMat + 5, SK_Scalar1, kU2G, kV2G); | 158 setrow(fMat + 5, SK_Scalar1, kU2G, kV2G); |
| 159 setrow(fMat + 10, SK_Scalar1, kU2B, 0); | 159 setrow(fMat + 10, SK_Scalar1, kU2B, 0); |
| 160 fMat[18] = SK_Scalar1; | 160 fMat[18] = SK_Scalar1; |
| 161 } | 161 } |
| OLD | NEW |