11#ifndef GrColor_DEFINED
12#define GrColor_DEFINED
32 #define GrColor_SHIFT_R 24
33 #define GrColor_SHIFT_G 16
34 #define GrColor_SHIFT_B 8
35 #define GrColor_SHIFT_A 0
37 #define GrColor_SHIFT_R 0
38 #define GrColor_SHIFT_G 8
39 #define GrColor_SHIFT_B 16
40 #define GrColor_SHIFT_A 24
59#define GrColorUnpackR(color) (((color) >> GrColor_SHIFT_R) & 0xFF)
60#define GrColorUnpackG(color) (((color) >> GrColor_SHIFT_G) & 0xFF)
61#define GrColorUnpackB(color) (((color) >> GrColor_SHIFT_B) & 0xFF)
62#define GrColorUnpackA(color) (((color) >> GrColor_SHIFT_A) & 0xFF)
68#define GrColor_ILLEGAL (~(0xFF << GrColor_SHIFT_A))
72 static const float ONE_OVER_255 = 1.f / 255.f;
73 return value * ONE_OVER_255;
79 return color.fitsInBytes();
static GrColor GrColorPackRGBA(unsigned r, unsigned g, unsigned b, unsigned a)
static uint64_t SkPMColor4f_toFP16(const SkPMColor4f &color)
static bool SkPMColor4fFitsInBytes(const SkPMColor4f &color)
static float GrNormalizeByteToFloat(uint8_t value)
SIN Vec< N, uint16_t > to_half(const Vec< N, float > &x)
static SKVX_ALWAYS_INLINE Vec Load(const void *ptr)