Accord.Imaging.ColorReduction.MedianCutQuantizer.SplitCubes C# (CSharp) Method

SplitCubes() private static method

private static SplitCubes ( List cubes, int count ) : void
cubes List
count int
return void
        private static void SplitCubes(List<MedianCutCube> cubes, int count)
        {
            int cubeIndexToSplit = cubes.Count - 1;

            while (cubes.Count < count)
            {
                MedianCutCube cubeToSplit = cubes[cubeIndexToSplit];
                MedianCutCube cube1, cube2;

                // find the longest color size to use for splitting
                if ((cubeToSplit.RedSize >= cubeToSplit.GreenSize) && (cubeToSplit.RedSize >= cubeToSplit.BlueSize))
                {
                    cubeToSplit.SplitAtMedian(RGB.R, out cube1, out cube2);
                }
                else if (cubeToSplit.GreenSize >= cubeToSplit.BlueSize)
                {
                    cubeToSplit.SplitAtMedian(RGB.G, out cube1, out cube2);
                }
                else
                {
                    cubeToSplit.SplitAtMedian(RGB.B, out cube1, out cube2);
                }

                // remove the old "big" cube
                cubes.RemoveAt(cubeIndexToSplit);
                // add two smaller cubes instead
                cubes.Insert(cubeIndexToSplit, cube1);
                cubes.Insert(cubeIndexToSplit, cube2);

                if (--cubeIndexToSplit < 0)
                {
                    cubeIndexToSplit = cubes.Count - 1;
                }
            }
        }
    }