PolyTree

Hierarchy

   |

PolyNode


The PolyTree data structure is only used to receive solutions from polygon clipping operations. Its advantage over the Polygons structure (which can also receive solutions) is that it also represents the parent-child relationships of the returned polygons.

An empty PolyTree object can be passed as the solution parameter to a Clipper object's Execute method. Once the clipping operation is completed, this method returns with the PolyTree structure filled with data representing the solution.

A PolyTree object is a container for any number of PolyNode children, with each contained PolyNode representing a single polygon contour (either an outer or hole polygon). PolyTree itself is a specialized PolyNode whose immediate children represent the top-level outer polygons of the solution. (Its own Contour property is always empty.) The contained top-level PolyNodes may contain their own PolyNode children representing hole polygons that may also contain children representing nested outer polygons etc. Children of outers will always be holes, and children of holes will always be outers.

Since the PolyTree data structure is more complex than the alternative Polygons data structure, and because it's more computationally expensive to process (the Execute method being roughly 5-10% slower), it should only be used when parent-child polygon relationships are needed and not just polygon coordinates.


    polytree: 
    Contour = ()
    ChildCount = 1
    Childs[0]: 
        Contour = ((10,10),(100,10),(100,100),(10,100))
        IsHole = False
        ChildCount = 1
        Childs[0]: 
            Contour = ((20,20),(20,90),(90,90),(90,20))
            IsHole = True
            ChildCount = 2
            Childs[0]: 
                Contour = ((30,30),(50,30),(50,50),(30,50))
                IsHole = False
                ChildCount = 0
            Childs[1]: 
                Contour = ((60,60),(80,60),(80,80),(60,80))
                IsHole = False
                ChildCount = 0

            

Reference

Fields Methods Properties
In PolyTree:
Clear Total
GetFirst
In PolyNode:
GetNext ChildCount
Childs
Contour
IsHole
Parent

See Also

Overview, Clipper, Clipper.Execute, PolyNode, Polygons