Home | ClipperLib |

# 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

Copyright ©2010-2013 Angus Johnson - Clipper version 5.1.5 - Help file built on 6-May-2013