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

Unified Diff: skia/effects/SkColorFilters.cpp

Issue 113827: Remove the remainder of the skia source code from the Chromium repo.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 7 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
« no previous file with comments | « skia/effects/SkCamera.cpp ('k') | skia/effects/SkColorMatrix.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: skia/effects/SkColorFilters.cpp
===================================================================
--- skia/effects/SkColorFilters.cpp (revision 16859)
+++ skia/effects/SkColorFilters.cpp (working copy)
@@ -1,553 +0,0 @@
-/* libs/graphics/effects/SkColorFilters.cpp
-**
-** Copyright 2006, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-** http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** See the License for the specific language governing permissions and
-** limitations under the License.
-*/
-
-#include "SkColorFilter.h"
-#include "SkColorPriv.h"
-#include "SkPorterDuff.h"
-#include "SkUtils.h"
-
-//#define TRACE_CreatePorterDuffFilter
-
-// common baseclass
-class Sk_XfermodeColorFilter : public SkColorFilter {
-protected:
- Sk_XfermodeColorFilter(SkColor color) : fColor(SkPreMultiplyColor(color)) {}
-
- virtual void flatten(SkFlattenableWriteBuffer& buffer)
- {
- buffer.write32(fColor);
- }
-
- Sk_XfermodeColorFilter(SkFlattenableReadBuffer& buffer)
- {
- fColor = buffer.readU32();
- }
-
- SkPMColor fColor;
-};
-
-class SkSrc_XfermodeColorFilter : public Sk_XfermodeColorFilter {
-public:
- SkSrc_XfermodeColorFilter(SkColor color) : INHERITED(color) {}
-
- virtual uint32_t getFlags()
- {
- if (SkGetPackedA32(fColor) == 0xFF)
- return kAlphaUnchanged_Flag | kHasFilter16_Flag;
- else
- return 0;
- }
-
- virtual void filterSpan(const SkPMColor shader[], int count, SkPMColor result[])
- {
- sk_memset32(result, fColor, count);
- }
-
- virtual void filterSpan16(const uint16_t shader[], int count, uint16_t result[])
- {
- SkASSERT(this->getFlags() & kHasFilter16_Flag);
-
- sk_memset16(result, SkPixel32ToPixel16(fColor), count);
- }
-
-protected:
- virtual Factory getFactory() { return CreateProc; }
-
- SkSrc_XfermodeColorFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {}
-
-private:
- static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer)
- {
- return SkNEW_ARGS(SkSrc_XfermodeColorFilter, (buffer));
- }
-
- typedef Sk_XfermodeColorFilter INHERITED;
-};
-
-class SkSrcOver_XfermodeColorFilter : public Sk_XfermodeColorFilter {
-public:
- SkSrcOver_XfermodeColorFilter(SkColor color) : INHERITED(color) {}
-
- virtual uint32_t getFlags()
- {
- if (SkGetPackedA32(fColor) == 0xFF)
- return kAlphaUnchanged_Flag | kHasFilter16_Flag;
- else
- return 0;
- }
-
- virtual void filterSpan(const SkPMColor shader[], int count, SkPMColor result[])
- {
- SkPMColor src = fColor;
- unsigned scale = SkAlpha255To256(255 - SkGetPackedA32(src));
-
- for (int i = 0; i < count; i++)
- result[i] = src + SkAlphaMulQ(shader[i], scale);
- }
-
- virtual void filterSpan16(const uint16_t shader[], int count, uint16_t result[])
- {
- SkASSERT(this->getFlags() & kHasFilter16_Flag);
-
- sk_memset16(result, SkPixel32ToPixel16(fColor), count);
- }
-
-protected:
- virtual Factory getFactory() { return CreateProc; }
-
- SkSrcOver_XfermodeColorFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {}
-
-private:
- static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer)
- {
- return SkNEW_ARGS(SkSrcOver_XfermodeColorFilter, (buffer));
- }
-
- typedef Sk_XfermodeColorFilter INHERITED;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-
-class SkXfermodeColorFilter : public Sk_XfermodeColorFilter {
-public:
- SkXfermodeColorFilter(SkColor color, SkXfermodeProc proc,
- SkXfermodeProc16 proc16) : INHERITED(color)
- {
- fProc = proc;
- fProc16 = proc16;
- }
-
- virtual uint32_t getFlags()
- {
- return fProc16 ? (kAlphaUnchanged_Flag | kHasFilter16_Flag) : 0;
- }
-
- virtual void filterSpan(const SkPMColor shader[], int count, SkPMColor result[])
- {
- SkPMColor color = fColor;
- SkXfermodeProc proc = fProc;
-
- for (int i = 0; i < count; i++)
- result[i] = proc(color, shader[i]);
- }
-
- virtual void filterSpan16(const uint16_t shader[], int count, uint16_t result[])
- {
- SkASSERT(this->getFlags() & kHasFilter16_Flag);
-
- SkPMColor color = fColor;
- SkXfermodeProc16 proc16 = fProc16;
-
- for (int i = 0; i < count; i++)
- result[i] = proc16(color, shader[i]);
- }
-
-protected:
- virtual void flatten(SkFlattenableWriteBuffer& buffer) {
- this->INHERITED::flatten(buffer);
- buffer.writeFunctionPtr((void*)fProc);
- buffer.writeFunctionPtr((void*)fProc16);
- }
-
- virtual Factory getFactory() {
- return CreateProc;
- }
-
- SkXfermodeColorFilter(SkFlattenableReadBuffer& buffer) : INHERITED(buffer) {
- fProc = (SkXfermodeProc) buffer.readFunctionPtr();
- fProc16 = (SkXfermodeProc16) buffer.readFunctionPtr();
- }
-private:
- static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer) {
- return SkNEW_ARGS(SkXfermodeColorFilter, (buffer));
- }
-
- SkXfermodeProc fProc;
- SkXfermodeProc16 fProc16;
-
- typedef Sk_XfermodeColorFilter INHERITED;
-};
-
-SkColorFilter* SkColorFilter::CreatXfermodeProcFilter(SkColor color,
- SkXfermodeProc proc,
- SkXfermodeProc16 proc16)
-{
- return proc ?
- SkNEW_ARGS(SkXfermodeColorFilter, (color, proc, proc16)) :
- NULL;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-
-SkColorFilter* SkColorFilter::CreatePorterDuffFilter(SkColor color,
- SkPorterDuff::Mode mode)
-{
- unsigned alpha = SkColorGetA(color);
-
- // first collaps some modes if possible
-
- if (SkPorterDuff::kClear_Mode == mode)
- {
- color = 0;
- mode = SkPorterDuff::kSrc_Mode;
- }
- else if (SkPorterDuff::kSrcOver_Mode == mode)
- {
- if (0 == alpha)
- {
- mode = SkPorterDuff::kDst_Mode;
- }
- else if (255 == alpha)
- {
- mode = SkPorterDuff::kSrc_Mode;
- }
- // else just stay srcover
- }
-
- // weed out combinations that are noops, and just return null
- if (SkPorterDuff::kDst_Mode == mode ||
- (0 == alpha && (SkPorterDuff::kSrcOver_Mode == mode ||
- SkPorterDuff::kDstOver_Mode == mode ||
- SkPorterDuff::kDstOut_Mode == mode ||
- SkPorterDuff::kSrcATop_Mode == mode ||
- SkPorterDuff::kXor_Mode == mode ||
- SkPorterDuff::kDarken_Mode == mode)) ||
- (0xFF == alpha && SkPorterDuff::kDstIn_Mode == mode))
- {
- return NULL;
- }
-
- switch (mode) {
- case SkPorterDuff::kSrc_Mode:
- return SkNEW_ARGS(SkSrc_XfermodeColorFilter, (color));
- case SkPorterDuff::kSrcOver_Mode:
- return SkNEW_ARGS(SkSrcOver_XfermodeColorFilter, (color));
- default:
- return SkColorFilter::CreatXfermodeProcFilter(color,
- SkPorterDuff::GetXfermodeProc(mode),
- SkPorterDuff::GetXfermodeProc16(mode, color));
- }
-}
-
-/////////////////////////////////////////////////////////////////////////////////////////////////
-
-static inline unsigned pin(unsigned value, unsigned max)
-{
- if (value > max)
- value = max;
- return value;
-}
-
-static inline unsigned SkUClampMax(unsigned value, unsigned max)
-{
- SkASSERT((int32_t)value >= 0);
- SkASSERT((int32_t)max >= 0);
-
- int diff = max - value;
- // clear diff if diff is positive
- diff &= diff >> 31;
-
- return value + diff;
-}
-
-class SkLightingColorFilter : public SkColorFilter {
-public:
- SkLightingColorFilter(SkColor mul, SkColor add) : fMul(mul), fAdd(add) {}
-
- virtual void filterSpan(const SkPMColor shader[], int count, SkPMColor result[])
- {
- unsigned scaleR = SkAlpha255To256(SkColorGetR(fMul));
- unsigned scaleG = SkAlpha255To256(SkColorGetG(fMul));
- unsigned scaleB = SkAlpha255To256(SkColorGetB(fMul));
-
- unsigned addR = SkColorGetR(fAdd);
- unsigned addG = SkColorGetG(fAdd);
- unsigned addB = SkColorGetB(fAdd);
-
- for (int i = 0; i < count; i++)
- {
- SkPMColor c = shader[i];
- if (c)
- {
- unsigned a = SkGetPackedA32(c);
- unsigned scaleA = SkAlpha255To256(a);
- unsigned r = pin(SkAlphaMul(SkGetPackedR32(c), scaleR) + SkAlphaMul(addR, scaleA), a);
- unsigned g = pin(SkAlphaMul(SkGetPackedG32(c), scaleG) + SkAlphaMul(addG, scaleA), a);
- unsigned b = pin(SkAlphaMul(SkGetPackedB32(c), scaleB) + SkAlphaMul(addB, scaleA), a);
- c = SkPackARGB32(a, r, g, b);
- }
- result[i] = c;
- }
- }
-
-protected:
- virtual void flatten(SkFlattenableWriteBuffer& buffer)
- {
- buffer.write32(fMul);
- buffer.write32(fAdd);
- }
-
- virtual Factory getFactory()
- {
- return CreateProc;
- }
-
- SkLightingColorFilter(SkFlattenableReadBuffer& buffer)
- {
- fMul = buffer.readU32();
- fAdd = buffer.readU32();
- }
-
- SkColor fMul, fAdd;
-
-private:
- static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer)
- {
- return SkNEW_ARGS(SkLightingColorFilter, (buffer));
- }
-};
-
-class SkLightingColorFilter_JustAdd : public SkLightingColorFilter {
-public:
- SkLightingColorFilter_JustAdd(SkColor mul, SkColor add)
- : INHERITED(mul, add) {}
-
- virtual void filterSpan(const SkPMColor shader[], int count, SkPMColor result[])
- {
- unsigned addR = SkColorGetR(fAdd);
- unsigned addG = SkColorGetG(fAdd);
- unsigned addB = SkColorGetB(fAdd);
-
- for (int i = 0; i < count; i++)
- {
- SkPMColor c = shader[i];
- if (c)
- {
- unsigned a = SkGetPackedA32(c);
- unsigned scaleA = SkAlpha255To256(a);
- unsigned r = pin(SkGetPackedR32(c) + SkAlphaMul(addR, scaleA), a);
- unsigned g = pin(SkGetPackedG32(c) + SkAlphaMul(addG, scaleA), a);
- unsigned b = pin(SkGetPackedB32(c) + SkAlphaMul(addB, scaleA), a);
- c = SkPackARGB32(a, r, g, b);
- }
- result[i] = c;
- }
- }
-
-protected:
- virtual Factory getFactory() { return CreateProc; }
-
- SkLightingColorFilter_JustAdd(SkFlattenableReadBuffer& buffer)
- : INHERITED(buffer) {}
-
-private:
- static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer)
- {
- return SkNEW_ARGS(SkLightingColorFilter_JustAdd, (buffer));
- }
- typedef SkLightingColorFilter INHERITED;
-};
-
-class SkLightingColorFilter_JustMul : public SkLightingColorFilter {
-public:
- SkLightingColorFilter_JustMul(SkColor mul, SkColor add)
- : INHERITED(mul, add) {}
-
- virtual void filterSpan(const SkPMColor shader[], int count, SkPMColor result[])
- {
- unsigned scaleR = SkAlpha255To256(SkColorGetR(fMul));
- unsigned scaleG = SkAlpha255To256(SkColorGetG(fMul));
- unsigned scaleB = SkAlpha255To256(SkColorGetB(fMul));
-
- for (int i = 0; i < count; i++)
- {
- SkPMColor c = shader[i];
- if (c)
- {
- unsigned a = SkGetPackedA32(c);
- unsigned r = SkAlphaMul(SkGetPackedR32(c), scaleR);
- unsigned g = SkAlphaMul(SkGetPackedG32(c), scaleG);
- unsigned b = SkAlphaMul(SkGetPackedB32(c), scaleB);
- c = SkPackARGB32(a, r, g, b);
- }
- result[i] = c;
- }
- }
-
-protected:
- virtual Factory getFactory() { return CreateProc; }
-
- SkLightingColorFilter_JustMul(SkFlattenableReadBuffer& buffer)
- : INHERITED(buffer) {}
-
-private:
- static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer)
- {
- return SkNEW_ARGS(SkLightingColorFilter_JustMul, (buffer));
- }
-
- typedef SkLightingColorFilter INHERITED;
-};
-
-class SkLightingColorFilter_SingleMul : public SkLightingColorFilter {
-public:
- SkLightingColorFilter_SingleMul(SkColor mul, SkColor add)
- : INHERITED(mul, add)
- {
- SkASSERT(SkColorGetR(add) == 0);
- SkASSERT(SkColorGetG(add) == 0);
- SkASSERT(SkColorGetB(add) == 0);
- SkASSERT(SkColorGetR(mul) == SkColorGetG(mul));
- SkASSERT(SkColorGetR(mul) == SkColorGetB(mul));
- }
-
- virtual uint32_t getFlags()
- {
- return this->INHERITED::getFlags() | (kAlphaUnchanged_Flag | kHasFilter16_Flag);
- }
-
- virtual void filterSpan16(const uint16_t shader[], int count, uint16_t result[])
- {
- // all mul components are the same
- unsigned scale = SkAlpha255To256(SkColorGetR(fMul));
-
- if (count > 0)
- do {
- *result++ = SkAlphaMulRGB16(*shader++, scale);
- } while (--count > 0);
- }
-
-protected:
- virtual Factory getFactory() { return CreateProc; }
-
- SkLightingColorFilter_SingleMul(SkFlattenableReadBuffer& buffer)
- : INHERITED(buffer) {}
-
-private:
- static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer)
- {
- return SkNEW_ARGS(SkLightingColorFilter_SingleMul, (buffer));
- }
-
- typedef SkLightingColorFilter INHERITED;
-};
-
-class SkLightingColorFilter_NoPin : public SkLightingColorFilter {
-public:
- SkLightingColorFilter_NoPin(SkColor mul, SkColor add)
- : INHERITED(mul, add) {}
-
- virtual void filterSpan(const SkPMColor shader[], int count, SkPMColor result[])
- {
- unsigned scaleR = SkAlpha255To256(SkColorGetR(fMul));
- unsigned scaleG = SkAlpha255To256(SkColorGetG(fMul));
- unsigned scaleB = SkAlpha255To256(SkColorGetB(fMul));
-
- unsigned addR = SkColorGetR(fAdd);
- unsigned addG = SkColorGetG(fAdd);
- unsigned addB = SkColorGetB(fAdd);
-
- for (int i = 0; i < count; i++)
- {
- SkPMColor c = shader[i];
- if (c)
- {
- unsigned a = SkGetPackedA32(c);
- unsigned scaleA = SkAlpha255To256(a);
- unsigned r = SkAlphaMul(SkGetPackedR32(c), scaleR) + SkAlphaMul(addR, scaleA);
- unsigned g = SkAlphaMul(SkGetPackedG32(c), scaleG) + SkAlphaMul(addG, scaleA);
- unsigned b = SkAlphaMul(SkGetPackedB32(c), scaleB) + SkAlphaMul(addB, scaleA);
- c = SkPackARGB32(a, r, g, b);
- }
- result[i] = c;
- }
- }
-
-protected:
- virtual Factory getFactory() { return CreateProc; }
-
- SkLightingColorFilter_NoPin(SkFlattenableReadBuffer& buffer)
- : INHERITED(buffer) {}
-
-private:
- static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer)
- {
- return SkNEW_ARGS(SkLightingColorFilter_NoPin, (buffer));
- }
-
- typedef SkLightingColorFilter INHERITED;
-};
-
-//////////////////////////////////////////////////////////////////////////////////////
-
-class SkSimpleColorFilter : public SkColorFilter {
-protected:
- void filterSpan(const SkPMColor src[], int count, SkPMColor result[])
- {
- if (result != src)
- memcpy(result, src, count * sizeof(SkPMColor));
- }
-
- virtual void flatten(SkFlattenableWriteBuffer& buffer)
- {
- }
-
- virtual Factory getFactory()
- {
- return CreateProc;
- }
-
- static SkFlattenable* CreateProc(SkFlattenableReadBuffer& buffer)
- {
- return SkNEW(SkSimpleColorFilter);
- }
-};
-
-SkColorFilter* SkColorFilter::CreateLightingFilter(SkColor mul, SkColor add)
-{
- mul &= 0x00FFFFFF;
- add &= 0x00FFFFFF;
-
- if (0xFFFFFF == mul)
- {
- if (0 == add)
- return SkNEW(SkSimpleColorFilter); // no change to the colors
- else
- return SkNEW_ARGS(SkLightingColorFilter_JustAdd, (mul, add));
- }
-
- if (0 == add)
- {
- if (SkColorGetR(mul) == SkColorGetG(mul) &&
- SkColorGetR(mul) == SkColorGetB(mul))
- {
- return SkNEW_ARGS(SkLightingColorFilter_SingleMul, (mul, add));
- }
- else
- {
- return SkNEW_ARGS(SkLightingColorFilter_JustMul, (mul, add));
- }
- }
-
- if (SkColorGetR(mul) + SkColorGetR(add) <= 255 &&
- SkColorGetG(mul) + SkColorGetG(add) <= 255 &&
- SkColorGetB(mul) + SkColorGetB(add) <= 255)
- return SkNEW_ARGS(SkLightingColorFilter_NoPin, (mul, add));
-
- return SkNEW_ARGS(SkLightingColorFilter, (mul, add));
-}
-
« no previous file with comments | « skia/effects/SkCamera.cpp ('k') | skia/effects/SkColorMatrix.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698