staticinline uint32_t SkColorTypeChannelFlags(SkColorType ct) { switch (ct) { case kUnknown_SkColorType: return0; case kAlpha_8_SkColorType: return kAlpha_SkColorChannelFlag; case kRGB_565_SkColorType: return kRGB_SkColorChannelFlags; case kARGB_4444_SkColorType: return kRGBA_SkColorChannelFlags; case kRGBA_8888_SkColorType: return kRGBA_SkColorChannelFlags; case kRGB_888x_SkColorType: return kRGB_SkColorChannelFlags; case kBGRA_8888_SkColorType: return kRGBA_SkColorChannelFlags; case kRGBA_1010102_SkColorType: return kRGBA_SkColorChannelFlags; case kRGB_101010x_SkColorType: return kRGB_SkColorChannelFlags; case kBGRA_1010102_SkColorType: return kRGBA_SkColorChannelFlags; case kBGR_101010x_SkColorType: return kRGB_SkColorChannelFlags; case kBGR_101010x_XR_SkColorType: return kRGB_SkColorChannelFlags; case kBGRA_10101010_XR_SkColorType: return kRGBA_SkColorChannelFlags; case kRGBA_10x6_SkColorType: return kRGBA_SkColorChannelFlags; case kGray_8_SkColorType: return kGray_SkColorChannelFlag; case kRGBA_F16Norm_SkColorType: return kRGBA_SkColorChannelFlags; case kRGBA_F16_SkColorType: return kRGBA_SkColorChannelFlags; case kRGB_F16F16F16x_SkColorType: return kRGB_SkColorChannelFlags; case kRGBA_F32_SkColorType: return kRGBA_SkColorChannelFlags; case kR8G8_unorm_SkColorType: return kRG_SkColorChannelFlags; case kA16_unorm_SkColorType: return kAlpha_SkColorChannelFlag; case kR16_unorm_SkColorType: return kRed_SkColorChannelFlag; case kR16G16_unorm_SkColorType: return kRG_SkColorChannelFlags; case kA16_float_SkColorType: return kAlpha_SkColorChannelFlag; case kR16_float_SkColorType: return kRed_SkColorChannelFlag; case kR16G16_float_SkColorType: return kRG_SkColorChannelFlags; case kR16G16B16A16_unorm_SkColorType: return kRGBA_SkColorChannelFlags; case kSRGBA_8888_SkColorType: return kRGBA_SkColorChannelFlags; case kR8_unorm_SkColorType: return kRed_SkColorChannelFlag;
}
SkUNREACHABLE;
}
staticinlineint SkColorTypeNumChannels(SkColorType ct) { switch (SkColorTypeChannelFlags(ct)) { case kRed_SkColorChannelFlag : return1; case kAlpha_SkColorChannelFlag : return1; case kGray_SkColorChannelFlag : return1; case kGrayAlpha_SkColorChannelFlags : return2; case kRG_SkColorChannelFlags : return2; case kRGB_SkColorChannelFlags : return3; case kRGBA_SkColorChannelFlags : return4; case0 : return0; default:
SkDEBUGFAIL("unexpected color channel flags"); return0;
}
SkUNREACHABLE;
}
staticinlinebool SkAlphaTypeIsValid(unsigned value) { return value <= kLastEnum_SkAlphaType;
}
staticint SkColorTypeShiftPerPixel(SkColorType ct) { switch (ct) { case kUnknown_SkColorType: return0; case kAlpha_8_SkColorType: return0; case kRGB_565_SkColorType: return1; case kARGB_4444_SkColorType: return1; case kRGBA_8888_SkColorType: return2; case kRGB_888x_SkColorType: return2; case kBGRA_8888_SkColorType: return2; case kRGBA_1010102_SkColorType: return2; case kRGB_101010x_SkColorType: return2; case kBGRA_1010102_SkColorType: return2; case kBGR_101010x_SkColorType: return2; case kBGR_101010x_XR_SkColorType: return2; case kBGRA_10101010_XR_SkColorType: return3; case kRGBA_10x6_SkColorType: return3; case kGray_8_SkColorType: return0; case kRGBA_F16Norm_SkColorType: return3; case kRGBA_F16_SkColorType: return3; case kRGB_F16F16F16x_SkColorType: return3; case kRGBA_F32_SkColorType: return4; case kR8G8_unorm_SkColorType: return1; case kA16_unorm_SkColorType: return1; case kR16_unorm_SkColorType: return1; case kR16G16_unorm_SkColorType: return2; case kA16_float_SkColorType: return1; case kR16_float_SkColorType: return1; case kR16G16_float_SkColorType: return2; case kR16G16B16A16_unorm_SkColorType: return3; case kSRGBA_8888_SkColorType: return2; case kR8_unorm_SkColorType: return0;
}
SkUNREACHABLE;
}
staticinlinebool SkColorTypeIsValid(unsigned value) { return value <= kLastEnum_SkColorType;
}
staticinline size_t SkColorTypeComputeOffset(SkColorType ct, int x, int y, size_t rowBytes) {
SkASSERT(x >= 0);
SkASSERT(y >= 0); if (kUnknown_SkColorType == ct) { return0;
} return (size_t)y * rowBytes + ((size_t)x << SkColorTypeShiftPerPixel(ct));
}
staticinlinebool SkColorTypeIsNormalized(SkColorType ct) { switch (ct) { case kUnknown_SkColorType: case kAlpha_8_SkColorType: case kRGB_565_SkColorType: case kARGB_4444_SkColorType: case kRGBA_8888_SkColorType: case kRGB_888x_SkColorType: case kBGRA_8888_SkColorType: case kRGBA_1010102_SkColorType: case kRGB_101010x_SkColorType: case kBGRA_1010102_SkColorType: case kBGR_101010x_SkColorType: case kRGBA_10x6_SkColorType: case kGray_8_SkColorType: case kRGBA_F16Norm_SkColorType: case kR8G8_unorm_SkColorType: case kA16_unorm_SkColorType: case kA16_float_SkColorType: /*subtle... alpha is always [0,1]*/ case kR16_unorm_SkColorType: case kR16G16_unorm_SkColorType: case kR16G16B16A16_unorm_SkColorType: case kSRGBA_8888_SkColorType: case kR8_unorm_SkColorType: return true;
case kBGRA_10101010_XR_SkColorType: case kBGR_101010x_XR_SkColorType: case kRGB_F16F16F16x_SkColorType: case kRGBA_F16_SkColorType: case kRGBA_F32_SkColorType: case kR16_float_SkColorType: case kR16G16_float_SkColorType: returnfalse;
}
SkUNREACHABLE;
}
staticinlineint SkColorTypeMaxBitsPerChannel(SkColorType ct) { switch (ct) { case kUnknown_SkColorType: return0;
case kARGB_4444_SkColorType: return4;
case kRGB_565_SkColorType: return6;
case kAlpha_8_SkColorType: case kRGBA_8888_SkColorType: case kRGB_888x_SkColorType: case kBGRA_8888_SkColorType: case kGray_8_SkColorType: case kR8G8_unorm_SkColorType: case kSRGBA_8888_SkColorType: case kR8_unorm_SkColorType: return8;
case kRGBA_1010102_SkColorType: case kRGB_101010x_SkColorType: case kBGRA_1010102_SkColorType: case kBGR_101010x_SkColorType: case kBGR_101010x_XR_SkColorType: case kBGRA_10101010_XR_SkColorType: case kRGBA_10x6_SkColorType: return10;
case kRGBA_F16Norm_SkColorType: case kA16_unorm_SkColorType: case kA16_float_SkColorType: case kR16_unorm_SkColorType: case kR16_float_SkColorType: case kR16G16_unorm_SkColorType: case kR16G16B16A16_unorm_SkColorType: case kRGBA_F16_SkColorType: case kRGB_F16F16F16x_SkColorType: case kR16G16_float_SkColorType: return16;
case kRGBA_F32_SkColorType: return32;
}
SkUNREACHABLE;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.