tk2dAtlas.MaxRectsBinPack.PruneFreeList C# (CSharp) Method

PruneFreeList() private method

private PruneFreeList ( ) : void
return void
        void PruneFreeList()
        {
            /*
            ///  Would be nice to do something like this, to avoid a Theta(n^2) loop through each pair.
            ///  But unfortunately it doesn't quite cut it, since we also want to detect containment.
            ///  Perhaps there's another way to do this faster than Theta(n^2).

            if (freeRectangles.size() > 0)
                clb::sort::QuickSort(&freeRectangles[0], freeRectangles.size(), NodeSortCmp);

            for(size_t i = 0; i < freeRectangles.size()-1; ++i)
                if (freeRectangles[i].x == freeRectangles[i+1].x &&
                    freeRectangles[i].y == freeRectangles[i+1].y &&
                    freeRectangles[i].width == freeRectangles[i+1].width &&
                    freeRectangles[i].height == freeRectangles[i+1].height)
                {
                    freeRectangles.erase(freeRectangles.begin() + i);
                    --i;
                }
            */

            /// Go through each pair and remove any rectangle that is redundant.
            for (int i = 0; i < freeRectangles.Count; ++i)
            {
                for (int j = i + 1; j < freeRectangles.Count; ++j)
                {
                    if (Rect.IsContainedIn(freeRectangles[i], freeRectangles[j]))
                    {
                        freeRectangles.RemoveAt(i);
                        --i;
                        break;
                    }
                    if (Rect.IsContainedIn(freeRectangles[j], freeRectangles[i]))
                    {
                        freeRectangles.RemoveAt(j);
                        --j;
                    }
                }
            }
        }