CSharpImageLibrary.DDS.DDS_BlockHelpers.UnpackDXTColour C# (CSharp) Method

UnpackDXTColour() private static method

Reads a packed DXT colour into RGB
private static UnpackDXTColour ( int colour, byte destination, int position, bool isPremultiplied ) : void
colour int Colour to convert to RGB
destination byte Decompressed array.
position int Position in destination to write RGB at.
isPremultiplied bool True = RGB interpreted as being premultiplied with A channel.
return void
        private static void UnpackDXTColour(int colour, byte[] destination, int position, bool isPremultiplied)
        {
            double alpha = isPremultiplied ? (destination[position + 3] / 255d) : 1d; // Normalise to 0-1.

            // Read RGB 5:6:5 data, expand to 8 bit.
            destination[position + 2] = (byte)(((colour & 0xF800) >> 8) / alpha);  // Red, but format is BGR, so last
            destination[position + 1] = (byte)(((colour & 0x7E0) >> 3) / alpha);  // Green
            destination[position] = (byte)(((colour & 0x1F) << 3) / alpha);      // Blue
        }