## Name

`difference_closed_polygons_xlddifference_closed_polygons_xldDifferenceClosedPolygonsXldDifferenceClosedPolygonsXld` — Compute the difference of closed polygons.

The operator `difference_closed_polygons_xlddifference_closed_polygons_xldDifferenceClosedPolygonsXldDifferenceClosedPolygonsXldDifferenceClosedPolygonsXld` calculates the difference
of the regions enclosed by the polygons `PolygonsPolygonsPolygonsPolygonspolygons` and `SubSubSubSubsub`.
The boundaries of this difference are returned in
`PolygonsDifferencePolygonsDifferencePolygonsDifferencePolygonsDifferencepolygonsDifference`.

If the individual input polygons are not closed, they are closed
automatically by connecting their start and end points.

Internally, first, the regions enclosed by each set of polygons
(`PolygonsPolygonsPolygonsPolygonspolygons` and `SubSubSubSubsub`, respectively) are determined as
described below. Then, the difference of these two regions is calculated.

In the following, the two sets of input polygons are referred to as
*boundary sets*. A boundary set consists of an arbitrary number of
boundaries (the individual polygons of `PolygonsPolygonsPolygonsPolygonspolygons` and `SubSubSubSubsub`,
respectively). Each boundary may be convex or concave and self-intersecting.
Internal holes may be formed by the nesting of boundaries.

The region enclosed by such a boundary set is defined by the so-called
Even-Odd-Rule. Thus, it consists of all points with the following property:
The line constructed by connecting the point with another reference point
that lies outside of the region has an odd number of intersections with
boundaries.

More descriptive, this means that a boundary defines a hole in the region
enclosed by another boundary if it lies completely inside that region.
Similarly, the overlapping area of two separate boundaries of one boundary
set is taken as a "hole", i.e., it does not belong to the region enclosed by
the two boundaries. Note that the region enclosed by a boundary does not
depend on the orientation of the boundary.

A self-intersecting boundary may be split at the intersection
point or it is reordered such that it touches itself at the intersection
point. The resulting boundaries are treated as separate boundaries.

The resulting polygons `PolygonsDifferencePolygonsDifferencePolygonsDifferencePolygonsDifferencepolygonsDifference` contain no references to
the XLD contours that are possibly referenced by `PolygonsPolygonsPolygonsPolygonspolygons` and
`SubSubSubSubsub`. Hence, operators that access the contours associated with
a polygon, e.g., `split_contours_xldsplit_contours_xldSplitContoursXldSplitContoursXldSplitContoursXld` will not work correctly.

- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.

Polygons enclosing the region from which the second
region is subtracted.

Polygons enclosing the region that is subtracted from
the first region.

Polygons enclosing the difference.

`difference_closed_polygons_xlddifference_closed_polygons_xldDifferenceClosedPolygonsXldDifferenceClosedPolygonsXldDifferenceClosedPolygonsXld` returns 2 (H_MSG_TRUE) if all parameters are
correct. If necessary, an exception is raised.

`gen_polygons_xldgen_polygons_xldGenPolygonsXldGenPolygonsXldGenPolygonsXld`

`differencedifferenceDifferenceDifferenceDifference`

`intersection_closed_polygons_xldintersection_closed_polygons_xldIntersectionClosedPolygonsXldIntersectionClosedPolygonsXldIntersectionClosedPolygonsXld`,
`symm_difference_closed_polygons_xldsymm_difference_closed_polygons_xldSymmDifferenceClosedPolygonsXldSymmDifferenceClosedPolygonsXldSymmDifferenceClosedPolygonsXld`,
`union2_closed_polygons_xldunion2_closed_polygons_xldUnion2ClosedPolygonsXldUnion2ClosedPolygonsXldUnion2ClosedPolygonsXld`,
`difference_closed_contours_xlddifference_closed_contours_xldDifferenceClosedContoursXldDifferenceClosedContoursXldDifferenceClosedContoursXld`

Foundation