| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 The Android Open Source Project |
| 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 | 8 |
| 9 | 9 |
| 10 #include "SkXfermode.h" | 10 #include "SkXfermode.h" |
| (...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 786 | 786 |
| 787 /** | 787 /** |
| 788 * GrEffect that implements the all the separable xfer modes that cannot be expr
essed as Coeffs. | 788 * GrEffect that implements the all the separable xfer modes that cannot be expr
essed as Coeffs. |
| 789 */ | 789 */ |
| 790 class XferEffect : public GrEffect { | 790 class XferEffect : public GrEffect { |
| 791 public: | 791 public: |
| 792 static bool IsSupportedMode(SkXfermode::Mode mode) { | 792 static bool IsSupportedMode(SkXfermode::Mode mode) { |
| 793 return mode > SkXfermode::kLastCoeffMode && mode <= SkXfermode::kLastMod
e; | 793 return mode > SkXfermode::kLastCoeffMode && mode <= SkXfermode::kLastMod
e; |
| 794 } | 794 } |
| 795 | 795 |
| 796 static GrEffectRef* Create(SkXfermode::Mode mode, GrTexture* background) { | 796 static GrEffect* Create(SkXfermode::Mode mode, GrTexture* background) { |
| 797 if (!IsSupportedMode(mode)) { | 797 if (!IsSupportedMode(mode)) { |
| 798 return NULL; | 798 return NULL; |
| 799 } else { | 799 } else { |
| 800 return SkNEW_ARGS(XferEffect, (mode, background)); | 800 return SkNEW_ARGS(XferEffect, (mode, background)); |
| 801 } | 801 } |
| 802 } | 802 } |
| 803 | 803 |
| 804 virtual void getConstantColorComponents(GrColor* color, | 804 virtual void getConstantColorComponents(GrColor* color, |
| 805 uint32_t* validFlags) const SK_OVERR
IDE { | 805 uint32_t* validFlags) const SK_OVERR
IDE { |
| 806 *validFlags = 0; | 806 *validFlags = 0; |
| (...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1216 } | 1216 } |
| 1217 | 1217 |
| 1218 SkXfermode::Mode fMode; | 1218 SkXfermode::Mode fMode; |
| 1219 GrCoordTransform fBackgroundTransform; | 1219 GrCoordTransform fBackgroundTransform; |
| 1220 GrTextureAccess fBackgroundAccess; | 1220 GrTextureAccess fBackgroundAccess; |
| 1221 | 1221 |
| 1222 typedef GrEffect INHERITED; | 1222 typedef GrEffect INHERITED; |
| 1223 }; | 1223 }; |
| 1224 | 1224 |
| 1225 GR_DEFINE_EFFECT_TEST(XferEffect); | 1225 GR_DEFINE_EFFECT_TEST(XferEffect); |
| 1226 GrEffectRef* XferEffect::TestCreate(SkRandom* rand, | 1226 GrEffect* XferEffect::TestCreate(SkRandom* rand, |
| 1227 GrContext*, | 1227 GrContext*, |
| 1228 const GrDrawTargetCaps&, | 1228 const GrDrawTargetCaps&, |
| 1229 GrTexture*[]) { | 1229 GrTexture*[]) { |
| 1230 int mode = rand->nextRangeU(SkXfermode::kLastCoeffMode + 1, SkXfermode::kLas
tSeparableMode); | 1230 int mode = rand->nextRangeU(SkXfermode::kLastCoeffMode + 1, SkXfermode::kLas
tSeparableMode); |
| 1231 | 1231 |
| 1232 return SkNEW_ARGS(XferEffect, (static_cast<SkXfermode::Mode>(mode), NULL)); | 1232 return SkNEW_ARGS(XferEffect, (static_cast<SkXfermode::Mode>(mode), NULL)); |
| 1233 } | 1233 } |
| 1234 | 1234 |
| 1235 #endif | 1235 #endif |
| 1236 | 1236 |
| 1237 /////////////////////////////////////////////////////////////////////////////// | 1237 /////////////////////////////////////////////////////////////////////////////// |
| 1238 /////////////////////////////////////////////////////////////////////////////// | 1238 /////////////////////////////////////////////////////////////////////////////// |
| 1239 | 1239 |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1354 A = SkAlphaBlend(A, dstA, SkAlpha255To256(a)); | 1354 A = SkAlphaBlend(A, dstA, SkAlpha255To256(a)); |
| 1355 } | 1355 } |
| 1356 dst[i] = SkToU8(A); | 1356 dst[i] = SkToU8(A); |
| 1357 } | 1357 } |
| 1358 } | 1358 } |
| 1359 } | 1359 } |
| 1360 } | 1360 } |
| 1361 } | 1361 } |
| 1362 | 1362 |
| 1363 #if SK_SUPPORT_GPU | 1363 #if SK_SUPPORT_GPU |
| 1364 bool SkProcCoeffXfermode::asNewEffect(GrEffectRef** effect, | 1364 bool SkProcCoeffXfermode::asNewEffect(GrEffect** effect, GrTexture* background)
const { |
| 1365 GrTexture* background) const { | |
| 1366 if (XferEffect::IsSupportedMode(fMode)) { | 1365 if (XferEffect::IsSupportedMode(fMode)) { |
| 1367 if (NULL != effect) { | 1366 if (NULL != effect) { |
| 1368 *effect = XferEffect::Create(fMode, background); | 1367 *effect = XferEffect::Create(fMode, background); |
| 1369 SkASSERT(NULL != *effect); | 1368 SkASSERT(NULL != *effect); |
| 1370 } | 1369 } |
| 1371 return true; | 1370 return true; |
| 1372 } | 1371 } |
| 1373 return false; | 1372 return false; |
| 1374 } | 1373 } |
| 1375 #endif | 1374 #endif |
| (...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1954 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSrcXfermode) | 1953 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSrcXfermode) |
| 1955 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstInXfermode) | 1954 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstInXfermode) |
| 1956 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstOutXfermode) | 1955 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkDstOutXfermode) |
| 1957 #if !SK_ARM_NEON_IS_NONE | 1956 #if !SK_ARM_NEON_IS_NONE |
| 1958 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkNEONProcCoeffXfermode) | 1957 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkNEONProcCoeffXfermode) |
| 1959 #endif | 1958 #endif |
| 1960 #if defined(SK_CPU_X86) && !defined(SK_BUILD_FOR_IOS) | 1959 #if defined(SK_CPU_X86) && !defined(SK_BUILD_FOR_IOS) |
| 1961 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSSE2ProcCoeffXfermode) | 1960 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSSE2ProcCoeffXfermode) |
| 1962 #endif | 1961 #endif |
| 1963 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END | 1962 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |
| OLD | NEW |