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

SplitCubes() private method

private SplitCubes ( List cubes, int count ) : void
cubes List
count int
return void
        private 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;
                }
            }
        }