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

BuildRGBPalette() public static method

Builds an RGB palette from the min and max colours of a texel.
public static BuildRGBPalette ( int Colour0, int Colour1, bool isDXT1 ) : int[]
Colour0 int First colour, usually the min.
Colour1 int Second colour, usually the max.
isDXT1 bool True = for DXT1 texels. Changes how the internals are calculated.
return int[]
        public static int[] BuildRGBPalette(int Colour0, int Colour1, bool isDXT1)
        {
            int[] Colours = new int[4];

            Colours[0] = Colour0;
            Colours[1] = Colour1;

            byte Colour0_R = 0;
            byte Colour0_G = 0;
            byte Colour0_B = 0;

            byte Colour1_R = 0;
            byte Colour1_G = 0;
            byte Colour1_B = 0;

            ReadDXTColour(Colour0, ref Colour0_R, ref Colour0_G, ref Colour0_B);
            ReadDXTColour(Colour1, ref Colour1_R, ref Colour1_G, ref Colour1_B);

            // Interpolate other 2 colours
            if (Colour0 > Colour1)
            {
                var r1 = (byte)(TwoThirds * Colour0_R + OneThird * Colour1_R);
                var g1 = (byte)(TwoThirds * Colour0_G + OneThird * Colour1_G);
                var b1 = (byte)(TwoThirds * Colour0_B + OneThird * Colour1_B);

                var r2 = (byte)(OneThird * Colour0_R + TwoThirds * Colour1_R);
                var g2 = (byte)(OneThird * Colour0_G + TwoThirds * Colour1_G);
                var b2 = (byte)(OneThird * Colour0_B + TwoThirds * Colour1_B);

                Colours[2] = BuildDXTColour(r1, g1, b1);
                Colours[3] = BuildDXTColour(r2, g2, b2);
            }
            else
            {
                // KFreon: Only for dxt1
                var r = (byte)(0.5 * Colour0_R + 0.5 * Colour1_R);
                var g = (byte)(0.5 * Colour0_G + 0.5 * Colour1_G);
                var b = (byte)(0.5 * Colour0_B + 0.5 * Colour1_B);

                Colours[2] = BuildDXTColour(r, g, b);
                Colours[3] = 0;
            }
            return Colours;
        }