Пример #1
0
SkColor SkPMColorToColor(SkPMColor pm)
{
    if (0 == pm)
        return 0;
    
    unsigned a = SkGetPackedA32(pm);
    uint32_t scale = (255 << 16) / a;
    
    return SkColorSetARGB(a,
                          InvScaleByte(SkGetPackedR32(pm), scale),
                          InvScaleByte(SkGetPackedG32(pm), scale),
                          InvScaleByte(SkGetPackedB32(pm), scale));
}
Пример #2
0
SkColor SkPMColorToColor(SkPMColor pm)
{
	if (!pm)
		return 0;
	unsigned a = SkGetPackedA32(pm);
	if (!a) {
		// A zero alpha value when there are non-zero R, G, or B channels is an
		// invalid premultiplied color (since all channels should have been
		// multiplied by 0 if a=0).
		SkASSERT(false); 
		// In production, return 0 to protect against division by zero.
		return 0;
	}

	uint32_t scale = (255 << 16) / a;

	return SkColorSetARGB(a,
		InvScaleByte(SkGetPackedR32(pm), scale),
		InvScaleByte(SkGetPackedG32(pm), scale),
		InvScaleByte(SkGetPackedB32(pm), scale));
}