summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/skia/src/effects/SkColorMatrix.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/skia/src/effects/SkColorMatrix.cpp')
-rw-r--r--chromium/third_party/skia/src/effects/SkColorMatrix.cpp43
1 files changed, 22 insertions, 21 deletions
diff --git a/chromium/third_party/skia/src/effects/SkColorMatrix.cpp b/chromium/third_party/skia/src/effects/SkColorMatrix.cpp
index 535d6cc2471..3842285bf40 100644
--- a/chromium/third_party/skia/src/effects/SkColorMatrix.cpp
+++ b/chromium/third_party/skia/src/effects/SkColorMatrix.cpp
@@ -1,4 +1,3 @@
-
/*
* Copyright 2011 Google Inc.
*
@@ -6,25 +5,27 @@
* found in the LICENSE file.
*/
#include "SkColorMatrix.h"
-#include "SkFlattenableBuffers.h"
-
-#define kRScale 0
-#define kGScale 6
-#define kBScale 12
-#define kAScale 18
void SkColorMatrix::setIdentity() {
memset(fMat, 0, sizeof(fMat));
- fMat[kRScale] = fMat[kGScale] = fMat[kBScale] = fMat[kAScale] = SK_Scalar1;
+ fMat[kR_Scale] = fMat[kG_Scale] = fMat[kB_Scale] = fMat[kA_Scale] = 1;
}
void SkColorMatrix::setScale(SkScalar rScale, SkScalar gScale, SkScalar bScale,
SkScalar aScale) {
memset(fMat, 0, sizeof(fMat));
- fMat[kRScale] = rScale;
- fMat[kGScale] = gScale;
- fMat[kBScale] = bScale;
- fMat[kAScale] = aScale;
+ fMat[kR_Scale] = rScale;
+ fMat[kG_Scale] = gScale;
+ fMat[kB_Scale] = bScale;
+ fMat[kA_Scale] = aScale;
+}
+
+void SkColorMatrix::postTranslate(SkScalar dr, SkScalar dg, SkScalar db,
+ SkScalar da) {
+ fMat[kR_Trans] += dr;
+ fMat[kG_Trans] += dg;
+ fMat[kB_Trans] += db;
+ fMat[kA_Trans] += da;
}
///////////////////////////////////////////////////////////////////////////////
@@ -115,14 +116,14 @@ static const SkScalar kHueB = 0.072f;
void SkColorMatrix::setSaturation(SkScalar sat) {
memset(fMat, 0, sizeof(fMat));
- const SkScalar R = SkScalarMul(kHueR, SK_Scalar1 - sat);
- const SkScalar G = SkScalarMul(kHueG, SK_Scalar1 - sat);
- const SkScalar B = SkScalarMul(kHueB, SK_Scalar1 - sat);
+ const SkScalar R = kHueR * (1 - sat);
+ const SkScalar G = kHueG * (1 - sat);
+ const SkScalar B = kHueB * (1 - sat);
setrow(fMat + 0, R + sat, G, B);
setrow(fMat + 5, R, G + sat, B);
setrow(fMat + 10, R, G, B + sat);
- fMat[18] = SK_Scalar1;
+ fMat[kA_Scale] = 1;
}
static const SkScalar kR2Y = 0.299f;
@@ -143,7 +144,7 @@ void SkColorMatrix::setRGB2YUV() {
setrow(fMat + 0, kR2Y, kG2Y, kB2Y);
setrow(fMat + 5, kR2U, kG2U, kB2U);
setrow(fMat + 10, kR2V, kG2V, kB2V);
- fMat[18] = SK_Scalar1;
+ fMat[kA_Scale] = 1;
}
static const SkScalar kV2R = 1.402f;
@@ -154,8 +155,8 @@ static const SkScalar kU2B = 1.772f;
void SkColorMatrix::setYUV2RGB() {
memset(fMat, 0, sizeof(fMat));
- setrow(fMat + 0, SK_Scalar1, 0, kV2R);
- setrow(fMat + 5, SK_Scalar1, kU2G, kV2G);
- setrow(fMat + 10, SK_Scalar1, kU2B, 0);
- fMat[18] = SK_Scalar1;
+ setrow(fMat + 0, 1, 0, kV2R);
+ setrow(fMat + 5, 1, kU2G, kV2G);
+ setrow(fMat + 10, 1, kU2B, 0);
+ fMat[kA_Scale] = 1;
}