| Index: include/gpu/GrColor.h
|
| diff --git a/include/gpu/GrColor.h b/include/gpu/GrColor.h
|
| index cf7e7df8431b2ee3f09c7eba9bc5d85f96b725eb..b0bce3f9b5f2dff0bdd0c00d3e1114e5c74a76a0 100644
|
| --- a/include/gpu/GrColor.h
|
| +++ b/include/gpu/GrColor.h
|
| @@ -14,21 +14,26 @@
|
| #include "GrTypes.h"
|
|
|
| /**
|
| - * GrColor is 4 bytes for R, G, B, A, in a compile-time specific order. The
|
| - * components are stored premultiplied.
|
| + * GrColor is 4 bytes for R, G, B, A, in a specific order defined below. The components are stored
|
| + * premultiplied.
|
| */
|
| typedef uint32_t GrColor;
|
|
|
| -
|
| // shift amount to assign a component to a GrColor int
|
| // These shift values are chosen for compatibility with GL attrib arrays
|
| // ES doesn't allow BGRA vertex attrib order so if they were not in this order
|
| -// we'd have to swizzle in shaders. Note the assumption that the cpu is little
|
| -// endian.
|
| -#define GrColor_SHIFT_R 0
|
| -#define GrColor_SHIFT_G 8
|
| -#define GrColor_SHIFT_B 16
|
| -#define GrColor_SHIFT_A 24
|
| +// we'd have to swizzle in shaders.
|
| +#ifdef SK_CPU_BENDIAN
|
| + #define GrColor_SHIFT_R 24
|
| + #define GrColor_SHIFT_G 16
|
| + #define GrColor_SHIFT_B 8
|
| + #define GrColor_SHIFT_A 0
|
| +#else
|
| + #define GrColor_SHIFT_R 0
|
| + #define GrColor_SHIFT_G 8
|
| + #define GrColor_SHIFT_B 16
|
| + #define GrColor_SHIFT_A 24
|
| +#endif
|
|
|
| /**
|
| * Pack 4 components (RGBA) into a GrColor int
|
| @@ -58,6 +63,22 @@ static inline GrColor GrColorPackRGBA(unsigned r, unsigned g,
|
| */
|
| #define GrColor_ILLEGAL (~(0xFF << GrColor_SHIFT_A))
|
|
|
| +/**
|
| + * Assert in debug builds that a GrColor is premultiplied.
|
| + */
|
| +static inline void GrColorIsPMAssert(GrColor c) {
|
| +#ifdef SK_DEBUG
|
| + unsigned a = GrColorUnpackA(c);
|
| + unsigned r = GrColorUnpackR(c);
|
| + unsigned g = GrColorUnpackG(c);
|
| + unsigned b = GrColorUnpackB(c);
|
| +
|
| + SkASSERT(r <= a);
|
| + SkASSERT(g <= a);
|
| + SkASSERT(b <= a);
|
| +#endif
|
| +}
|
| +
|
| /** Converts a GrColor to an rgba array of GrGLfloat */
|
| static inline void GrColorToRGBAFloat(GrColor color, float rgba[4]) {
|
| static const float ONE_OVER_255 = 1.f / 255.f;
|
|
|