Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Unified Diff: src/effects/SkColorCubeFilter.cpp

Issue 1288323004: Patches on top of Radu's latest. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: const Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/effects/SkColorCubeFilter.cpp
diff --git a/src/effects/SkColorCubeFilter.cpp b/src/effects/SkColorCubeFilter.cpp
index 3b7c75fa7f5990c320dc0c45c177bba1cc79758c..f37b695cba5c16b6439543f3a1de8fa9244cbc90 100644
--- a/src/effects/SkColorCubeFilter.cpp
+++ b/src/effects/SkColorCubeFilter.cpp
@@ -8,6 +8,7 @@
#include "SkColorCubeFilter.h"
#include "SkColorPriv.h"
#include "SkOnce.h"
+#include "SkOpts.h"
#include "SkReadBuffer.h"
#include "SkUnPreMultiply.h"
#include "SkWriteBuffer.h"
@@ -128,36 +129,9 @@ void SkColorCubeFilter::filterSpan(const SkPMColor src[], int count, SkPMColor d
const SkScalar* colorToScalar;
fCache.getProcessingLuts(&colorToIndex, &colorToFactors, &colorToScalar);
- const int dim = fCache.cubeDimension();
- SkColor* colorCube = (SkColor*)fCubeData->data();
- for (int i = 0; i < count; ++i) {
- SkColor inputColor = SkUnPreMultiply::PMColorToColor(src[i]);
- uint8_t r = SkColorGetR(inputColor);
- uint8_t g = SkColorGetG(inputColor);
- uint8_t b = SkColorGetB(inputColor);
- uint8_t a = SkColorGetA(inputColor);
- SkScalar rOut(0), gOut(0), bOut(0);
- for (int x = 0; x < 2; ++x) {
- for (int y = 0; y < 2; ++y) {
- for (int z = 0; z < 2; ++z) {
- SkColor lutColor = colorCube[colorToIndex[x][r] +
- (colorToIndex[y][g] +
- colorToIndex[z][b] * dim) * dim];
- SkScalar factor = colorToFactors[x][r] *
- colorToFactors[y][g] *
- colorToFactors[z][b];
- rOut += colorToScalar[SkColorGetR(lutColor)] * factor;
- gOut += colorToScalar[SkColorGetG(lutColor)] * factor;
- bOut += colorToScalar[SkColorGetB(lutColor)] * factor;
- }
- }
- }
- const SkScalar aOut = SkIntToScalar(a);
- dst[i] = SkPackARGB32(a,
- SkScalarRoundToInt(rOut * aOut),
- SkScalarRoundToInt(gOut * aOut),
- SkScalarRoundToInt(bOut * aOut));
- }
Noel Gordon 2015/08/19 01:02:59 This was a reference implementation, and it was a
mtklein 2015/08/19 01:58:22 I don't think so, but I don't mind adding it if yo
+ SkOpts::color_cube_filter_span(src, count, dst, colorToIndex,
+ colorToFactors, fCache.cubeDimension(),
+ (SkColor*)fCubeData->data());
Noel Gordon 2015/08/19 01:02:59 (const SkColor*)fCubeData->data() ?
mtklein 2015/08/19 01:58:22 Done.
}
SkFlattenable* SkColorCubeFilter::CreateProc(SkReadBuffer& buffer) {

Powered by Google App Engine
This is Rietveld 408576698