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

CheckDXT1TexelFullTransparency() static private method

static private CheckDXT1TexelFullTransparency ( byte imgData, int sourcePosition, int sourceLineLength, byte destination, int destPosition, AlphaSettings alphaSetting, double alphaRef ) : int
imgData byte
sourcePosition int
sourceLineLength int
destination byte
destPosition int
alphaSetting AlphaSettings
alphaRef double
return int
        static int CheckDXT1TexelFullTransparency(byte[] imgData, int sourcePosition, int sourceLineLength, byte[] destination, int destPosition, AlphaSettings alphaSetting, double alphaRef)
        {
            int uColourKey = 0;
            int position = sourcePosition;

            // Alpha stuff
            for (int i = 1; i <= 4; i++)
            {
                for (int j = 0; j < 4; j++)
                {
                    RGBColour colour = ReadColourFromTexel(imgData, position, alphaSetting == AlphaSettings.Premultiply);
                    if (colour.a < alphaRef)
                        uColourKey++;
                    position += 4;
                }

                position = sourcePosition + sourceLineLength * i;
            }

            if (uColourKey == 16)
            {
                // Entire texel is transparent

                for (int i = 0; i < 8; i++)
                    destination[destPosition + i] = byte.MaxValue;

                return -1;
            }

            return uColourKey > 0 ? 3 : 4;
        }