diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/gpu/GrColor.h | 3 | ||||
-rw-r--r-- | include/gpu/GrContext.h | 1 | ||||
-rw-r--r-- | include/gpu/GrProcessorUnitTest.h | 61 |
3 files changed, 65 insertions, 0 deletions
diff --git a/include/gpu/GrColor.h b/include/gpu/GrColor.h index 50a8ec3c0e..820b915617 100644 --- a/include/gpu/GrColor.h +++ b/include/gpu/GrColor.h @@ -66,6 +66,9 @@ static inline GrColor GrColorPackRGBA(unsigned r, unsigned g, */ #define GrColor_ILLEGAL (~(0xFF << GrColor_SHIFT_A)) +#define GrColor_WHITE 0xFFFFFFFF +#define GrColor_TRANS_BLACK 0x0 + /** * Assert in debug builds that a GrColor is premultiplied. */ diff --git a/include/gpu/GrContext.h b/include/gpu/GrContext.h index c6dd2d7563..c3c11b7be7 100644 --- a/include/gpu/GrContext.h +++ b/include/gpu/GrContext.h @@ -983,6 +983,7 @@ private: void internalDrawPath(GrDrawTarget*, GrDrawState*, + GrColor, bool useAA, const SkPath&, const GrStrokeInfo&); diff --git a/include/gpu/GrProcessorUnitTest.h b/include/gpu/GrProcessorUnitTest.h index 3e1601dc8e..fbf4382d69 100644 --- a/include/gpu/GrProcessorUnitTest.h +++ b/include/gpu/GrProcessorUnitTest.h @@ -8,6 +8,7 @@ #ifndef GrProcessorUnitTest_DEFINED #define GrProcessorUnitTest_DEFINED +#include "GrColor.h" #include "SkRandom.h" #include "SkTArray.h" #include "SkTypes.h" @@ -29,6 +30,66 @@ const SkMatrix& TestMatrix(SkRandom*); } +static inline GrColor GrRandomColor(SkRandom* random) { + // There are only a few cases of random colors which interest us + enum ColorMode { + kAllOnes_ColorMode, + kAllZeros_ColorMode, + kAlphaOne_ColorMode, + kRandom_ColorMode, + kLast_ColorMode = kRandom_ColorMode + }; + + ColorMode colorMode = ColorMode(random->nextULessThan(kLast_ColorMode + 1)); + GrColor color; + switch (colorMode) { + case kAllOnes_ColorMode: + color = GrColorPackRGBA(0xFF, 0xFF, 0xFF, 0xFF); + break; + case kAllZeros_ColorMode: + color = GrColorPackRGBA(0, 0, 0, 0); + break; + case kAlphaOne_ColorMode: + color = GrColorPackRGBA(random->nextULessThan(256), + random->nextULessThan(256), + random->nextULessThan(256), + 0xFF); + break; + case kRandom_ColorMode: + uint8_t alpha = random->nextULessThan(256); + color = GrColorPackRGBA(random->nextRangeU(0, alpha), + random->nextRangeU(0, alpha), + random->nextRangeU(0, alpha), + alpha); + break; + } + GrColorIsPMAssert(color); + return color; +} + +static inline uint8_t GrRandomCoverage(SkRandom* random) { + enum CoverageMode { + kZero_CoverageMode, + kAllOnes_CoverageMode, + kRandom_CoverageMode, + kLast_CoverageMode = kRandom_CoverageMode + }; + + CoverageMode colorMode = CoverageMode(random->nextULessThan(kLast_CoverageMode + 1)); + uint8_t coverage; + switch (colorMode) { + case kZero_CoverageMode: + coverage = 0; + case kAllOnes_CoverageMode: + coverage = 0xff; + break; + case kRandom_CoverageMode: + coverage = random->nextULessThan(256); + break; + } + return coverage; +} + #if SK_ALLOW_STATIC_GLOBAL_INITIALIZERS class GrContext; |