fix incorrect team flag alpha channel when loaded from disk
This commit is contained in:
+16
-16
@@ -37,23 +37,23 @@ constexpr uint32_t encode_argb8888(uint8_t r, uint8_t g, uint8_t b, uint8_t a) {
|
||||
return (a << 24) | (r << 16) | (g << 8) | b;
|
||||
}
|
||||
|
||||
constexpr uint16_t encode_xrgb8888_to_xrgb1555(uint32_t xrgb8888) {
|
||||
constexpr uint16_t encode_argb8888_to_argb1555(uint32_t argb8888) {
|
||||
// In: aaaaaaaarrrrrrrrggggggggbbbbbbbb
|
||||
// Out: arrrrrgggggbbbbb
|
||||
return ((argb8888 >> 9) & 0x7C00) | ((argb8888 >> 6) & 0x03E0) | ((argb8888 >> 3) & 0x001F) | ((argb8888 >> 16) & 0x8000);
|
||||
}
|
||||
|
||||
constexpr uint16_t encode_rgba8888_to_argb1555(uint32_t rgba8888) {
|
||||
// In: rrrrrrrrggggggggbbbbbbbbaaaaaaaa
|
||||
// Out: -rrrrrgggggbbbbb
|
||||
return ((xrgb8888 >> 9) & 0x7C00) | ((xrgb8888 >> 6) & 0x03E0) | ((xrgb8888 >> 3) & 0x001F);
|
||||
// Out: arrrrrgggggbbbbb
|
||||
return ((rgba8888 >> 17) & 0x7C00) | ((rgba8888 >> 14) & 0x03E0) | ((rgba8888 >> 11) & 0x001F) | ((rgba8888 << 8) & 0x8000);
|
||||
}
|
||||
|
||||
constexpr uint16_t encode_rgbx8888_to_xrgb1555(uint32_t rgbx8888) {
|
||||
// In: rrrrrrrrggggggggbbbbbbbbxxxxxxxx
|
||||
// Out: -rrrrrgggggbbbbb
|
||||
return ((rgbx8888 >> 17) & 0x7C00) | ((rgbx8888 >> 14) & 0x03E0) | ((rgbx8888 >> 11) & 0x001F);
|
||||
}
|
||||
|
||||
constexpr uint32_t decode_xrgb1555_to_rgba8888(uint16_t xrgb1555) {
|
||||
// In: -rrrrrgggggbbbbb
|
||||
// Out: rrrrrrrrggggggggbbbbbbbbaaaaaaaa (a is always FF)
|
||||
return ((xrgb1555 << 17) & 0xF8000000) | ((xrgb1555 << 12) & 0x07000000) |
|
||||
((xrgb1555 << 14) & 0x00F80000) | ((xrgb1555 << 9) & 0x00070000) |
|
||||
((xrgb1555 << 11) & 0x0000F800) | ((xrgb1555 << 6) & 0x00000700) |
|
||||
0x000000FF;
|
||||
constexpr uint32_t decode_argb1555_to_rgba8888(uint16_t argb1555) {
|
||||
// In: arrrrrgggggbbbbb
|
||||
// Out: rrrrrrrrggggggggbbbbbbbbaaaaaaaa
|
||||
return ((argb1555 << 17) & 0xF8000000) | ((argb1555 << 12) & 0x07000000) |
|
||||
((argb1555 << 14) & 0x00F80000) | ((argb1555 << 9) & 0x00070000) |
|
||||
((argb1555 << 11) & 0x0000F800) | ((argb1555 << 6) & 0x00000700) |
|
||||
((argb1555 & 0x8000) ? 0x000000FF : 0x00000000);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user