diff options
Diffstat (limited to 'upstream/clipper-6.4.2/Documentation/Docs/Overview')
7 files changed, 1928 insertions, 0 deletions
diff --git a/upstream/clipper-6.4.2/Documentation/Docs/Overview/Changes.htm b/upstream/clipper-6.4.2/Documentation/Docs/Overview/Changes.htm new file mode 100644 index 0000000..c05e9b3 --- /dev/null +++ b/upstream/clipper-6.4.2/Documentation/Docs/Overview/Changes.htm @@ -0,0 +1,1269 @@ +<html>
+
+<head>
+
+ <script type="text/javascript" src="../../Scripts/jquery.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shCore.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushDelphi.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushCpp.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushCSharp.js">
+ </script>
+
+ <link type="text/css" rel="stylesheet" href="../../Scripts/SyntaxHighlighter/styles/shCoreDefault.css">
+
+ <link type="text/css" rel="stylesheet" href="../../Scripts/SyntaxHighlighter/styles/shThemeDefault.css">
+
+
+ <title>Changes</title>
+
+
+ <link rel="stylesheet" href="../../Styles/default.css" type="text/css">
+
+
+ <script src="../../Scripts/expandable.js" type="text/javascript">
+ </script>
+
+
+ <style>
+ /* barebones expandable list */
+
+ ul.barebones {
+ margin-left: 30px;
+ padding: 0;
+ }
+
+ ul.barebones ul {
+ margin: 0;
+ padding-left: 1.5em;
+ }
+
+ ul.barebones li {
+ list-style-type: none;
+ position: relative;
+ }
+
+ ul.barebones a.switch {
+ font-size: 2px;
+ text-indent: -500px;
+ background: transparent url(../../Images/_buttons.gif) no-repeat top left;
+ height: 9px;
+ width: 9px;
+ left: -13px;
+ top: 2px;
+ position: absolute;
+ }
+
+ ul.barebones a { text-decoration: none; }
+ ul.barebones a:hover { text-decoration: underline; }
+ ul.barebones a.switch:hover { text-decoration: none; }
+
+ ul.barebones a.on { background-position: top left; }
+ ul.barebones a.off { background-position: bottom left; }
+
+ ul.barebones h2 {
+ margin: 0px;
+ padding: 0px;
+ display: inline;
+ }
+
+ ul.dots li {
+ list-style-type: square;
+ }
+
+ blockquote {
+ margin: 0px 0px 0px 20px;
+ }
+
+
+ </style>
+
+
+ <script type="text/javascript" src="../../Scripts/bootstrap.js">
+ </script>
+
+
+ <script type="text/javascript" src="../../Scripts/bootstrap.js">
+ </script>
+
+</head>
+
+<body style="background-color: rgb(255, 255, 255);">
+
+ <!-- THIS FILE HAS BEEN AUTOMATICALLY PROCESSED FROM A SOURCE COPY -->
+
+ <!-- DO NOT EDIT MANUALLY !!! -->
+
+ <table class="Banner" cellspacing="0" cellpadding="0" border="1" bordercolorlight="#303080" bordercolordark="#7070B0">
+ <tr>
+ <td class="Banner" nowrap=""><a href="../_Body.htm" class="Banner"><img src="../../Images/_Home.gif" align="absmiddle">Home</a>
+ </td>
+ <td class="Banner" nowrap=""><a href="_Body.htm" class="Banner">Overview</a>
+ </td>
+ <td class="Banner" width="100%" align="right"><img src="../../Images/_Project_Logo.gif" align="absmiddle">
+ </td>
+ </tr>
+ </table>
+ <h1>Changes</h1>
+
+ <ul class="barebones expandable">
+
+
+ <!--
+<li>
+ <h2>v6.2.X (XX December 2015)</h2><br>
+ <ul>
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+ xxxxxxxxxxxxxxxxxxxxxxxxxxx
+ </ul>
+ </li>
+ </ul>
+</li>
+<li>
+ -->
+
+
+ <li>
+ <h2>v6.2.1 (31 October 2014)</h2><br>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+ Bugfix in <strong><a href="../Units/ClipperLib/Classes/ClipperOffset/Methods/Execute.htm">ClipperOffset.Execute</a></strong> where the Polytree.IsHole property was returning incorrect values with negative offsets
+
+ </ul> </li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Modified:</h2>
+ <ul class="dots">
+ Very minor improvement to join rounding in ClipperOffset
+
+ </ul> </li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+ Fixed CPP OpenGL demo
+
+ </ul> </li>
+
+ </ul> </li>
+
+
+ <li>
+ <h2>v6.2.0 (26 September 2014)</h2><br>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+ Numerous minor bugfixes - too many to list. (See revisions 454-475 in Sourceforge Repository.)
+
+ </ul> </li>
+
+ <li>
+ <h2>Modified:</h2>
+ <ul class="dots">
+ Parameters have changed in the <a href="../Units/ClipperLib/Types/ZFillCallback.htm"><b>custom callback function</b></a> that can be assigned to <a href="../Units/ClipperLib/Classes/Clipper/Properties/ZFillFunction.htm"><strong>ZFillFunction</strong></a>.
+
+ </ul> </li>
+
+ <li>
+ <h2>Modified:</h2>
+ <ul class="dots">
+ Deprecated functions have been removed.
+
+ </ul> </li>
+
+ <li>
+ <h2>Modified:</h2>
+ <ul class="dots">
+ The Curves demo has been temporarily removed. (It needs to be updated but that was holding up this latest release of the Clipper library.)
+
+ </ul> </li>
+
+ </ul> </li>
+
+
+ <li>
+ <h2>v6.1.3 (18 January 2014)</h2><br>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+ Fixed potential endless loop condition when adding open paths to Clipper.
+
+ </ul> </li>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+ Fixed missing implementation of <a href="../Units/ClipperLib/Functions/SimplifyPolygon.htm"><b>SimplifyPolygon</b></a> function in C++ code.
+
+ </ul> </li>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+ Fixed incorrect upper range constant for polygon coordinates in Delphi code.
+
+ </ul> </li>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+ Added <a href="../Units/ClipperLib/Functions/PointInPolygon.htm"><b>PointInPolygon</b></a> function.
+
+ </ul> </li>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+ Overloaded <a href="../Units/ClipperLib/Functions/MinkowskiSum.htm"><b>MinkowskiSum</b></a> function to accommodate multi-contour paths.
+
+ </ul> </li>
+
+ <li>
+ <h2>Modified:</h2>
+ <ul class="dots">
+ Documentation updated.
+
+ </ul> </li>
+
+ </ul> </li>
+
+
+ <li>
+ <h2>v6.1.2 (15 December 2013)</h2><br>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Fixed broken C++ header file.
+
+ </ul> </li>
+
+ <li>
+ <h2>Modified:</h2>
+ <ul class="dots">
+Minor improvement to joining polygons.
+
+ </ul> </li>
+
+ </ul> </li>
+
+
+ <li>
+ <h2>v6.1.1 (13 December 2013)</h2><br>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Fixed a couple of bugs affecting open paths that could raise unhandled exceptions.
+
+ </ul> </li>
+
+ </ul> </li>
+
+
+ <li>
+ <h2>v6.1.0 (2 December 2013)</h2><br>
+ <ul>
+
+ <li>
+ <h2>Deleted:</h2>
+ <ul class="dots">Previously deprecated code has been removed.
+ </ul> </li>
+
+ <li>
+ <h2>Modified:</h2>
+ <ul class="dots">
+The <a href="../Units/ClipperLib/Functions/OffsetPaths.htm">OffsetPaths</a> function is now deprecated as it has been replaced by the <a href="../Units/ClipperLib/Classes/ClipperOffset/_Body.htm"><b>ClipperOffset</b></a> class which is much more flexible.
+
+ </ul> </li>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Several minor bugs have been fixed including occasionally an incorrect nesting within the PolyTree structure.
+
+ </ul> </li>
+
+ </ul> </li>
+
+
+ <li>
+ <h2>v6.0.0 (30 October 2013)</h2><br>
+ <ul>
+
+ <li><span class="maroon"><b>Ver 6 is a MAJOR update that adds support for open path clipping.</b></span></li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+Open path (polyline) clipping. A new 'Curves' demo application showcases this (see the 'Curves' directory).
+
+ </ul> </li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+Major improvement in the merging of shared/collinear edges in clip solutions (see <a href="../Units/ClipperLib/Classes/Clipper/Methods/Execute.htm">Execute</a>).
+
+ </ul> </li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+The <a href="../Units/ClipperLib/Types/IntPoint.htm"><b>IntPoint</b></a>
+structure now has an optional 'Z' member. (See the precompiler directive
+ <a href="../Units/ClipperLib/PreProcessor/Defines.htm"><b><b>use_xyz</b></b></a>.)
+
+ </ul> </li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+Users can now force Clipper to use 32bit integers (via the precompiler
+directive <a href="../Units/ClipperLib/PreProcessor/Defines.htm"><b>use_int32</b></a>)
+instead of using 64bit integers. Using 32bit integers improves clipping
+performance by about 20-30%. (This has required the introduction of a
+new <a href="../Units/ClipperLib/Types/CInt.htm"><b>cInt</b></a>
+integer type.) The trade-off to this speed up in performance is a very
+restricted vertex coordinate range of ± 46340.
+
+ </ul> </li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Modified:</h2>
+ <ul class="dots">
+To accommodate open paths, the <b>Polygon</b> and <b>Polygons</b> structures have been renamed <a href="../Units/ClipperLib/Types/Path.htm"><b>Path</b></a> and <a href="../Units/ClipperLib/Types/Paths.htm"><b>Paths</b></a>
+respectively. The <b>AddPolygon</b> and <b>AddPolygons</b> methods of the ClipperBase class have been renamed <a href="../Units/ClipperLib/Classes/ClipperBase/Methods/AddPath.htm"><b>AddPath</b></a> and <a href="../Units/ClipperLib/Classes/ClipperBase/Methods/AddPaths.htm"><b>AddPaths</b></a> respectively. Several other functions have been similarly renamed.
+
+ </ul> </li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Modified:</h2>
+ <ul class="dots">
+The PolyNode Class has a new IsOpen property (to support open paths).
+
+ </ul> </li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Modified:</h2>
+ <ul class="dots">
+The Clipper class has a new <a href="../Units/ClipperLib/Classes/Clipper/Properties/ZFillFunction.htm"><b>ZFillFunction</b></a>
+property.
+
+ </ul> </li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+ <a href="../Units/ClipperLib/Functions/MinkowskiSum.htm"><b>MinkowskiSum</b></a> and
+ <a href="../Units/ClipperLib/Functions/MinkowskiDiff.htm"><b>MinkowskiDiff</b></a> functions added.
+
+ </ul> </li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+Several other new functions have been added including <a href="../Units/ClipperLib/Functions/PolyTreeToPaths.htm"><b>PolyTreeToPaths</b></a>,
+ <a href="../Units/ClipperLib/Functions/OpenPathsFromPolyTree.htm"><b>OpenPathsFromPolyTree</b></a>
+and <a href="../Units/ClipperLib/Functions/ClosedPathsFromPolyTree.htm"><b>ClosedPathsFromPolyTree</b></a>.
+
+ </ul> </li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+The <a href="../Units/ClipperLib/Classes/Clipper/Methods/Constructor.htm">Clipper constructor</a> now accepts an optional <a href="../Units/ClipperLib/Types/InitOptions.htm">InitOptions</a> parameter to simplify setting properties.
+
+ </ul> </li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Numerous minor bugs have been fixed.
+
+ </ul> </li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Deprecated:</h2>
+ <ul class="dots">
+Version 6 is a major upgrade from previous versions and <span class="maroon"><b>quite a number of changes have been made to exposed structures and functions</b></span>. To minimize inconvenience to existing library users, some code has been retained and some added
+to maintain backward compatibility. However, because this code will be
+removed in a future update, it has been marked as deprecated and a
+precompiler directive <a href="./Deprecated.htm"><b>use_deprecated</b></a>
+has been defined.
+
+ </ul> </li>
+
+ </ul> </li>
+
+
+ <li>
+ <h2>v5.1.6 (23 May 2013)</h2>
+ <ul>
+
+ <li>
+ <h2>BugFix:</h2>
+ <ul class="dots">
+The <a href="../Units/ClipperLib/Functions/CleanPolygon.htm">CleanPolygon</a>
+function was buggy.
+
+ </ul> </li>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+New OffsetPolyLines function. (Replaced with OffsetPaths function in
+ver 6.)
+
+ </ul> </li>
+
+ <li>
+ <h2>Changed:</h2>
+ <ul class="dots">
+The behaviour of the 'miter' JoinType has
+been changed so that when squaring occurs, it's no longer extended up
+to the miter limit but is squared off at exactly 'delta' units. (This
+improves the look of mitering with larger limits at acute angles.)
+
+ </ul> </li>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+Minor code refactoring and optimisations.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v5.1.5 (5 May 2013)</h2>
+ <ul>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+ForceSimple property added to the Clipper Class. (Renamed
+StrictlySimple in ver 6.)
+
+ </ul> </li>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+Further improvements to this documentation.
+
+ </ul> </li>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+Minor code optimisations and trivial bug fixes.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v5.1.4 (24 March 2013)</h2>
+ <ul>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+ <a href="../Units/ClipperLib/Functions/CleanPolygon.htm">CleanPolygon</a>
+function enhanced.
+
+ </ul> </li>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+Documentation improved.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v5.1.3 (12 March 2013)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Minor bug fixes.
+
+ </ul> </li>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+Documentation significantly improved.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v5.1.2 (26 February 2013)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+PolyNode class was missing a constructor.
+
+ </ul> </li>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+The <i>MiterLimit</i> parameter in the <a href="../Units/ClipperLib/Functions/OffsetPaths.htm">OffsetPolygons</a>
+function has been renamed <i>Limit</i> and can now also be used to
+limit the number of vertices used to construct arcs when JoinType is
+set to jtRound.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v5.1.0 (17 February 2013)</h2>
+ <ul>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+ExPolygons has been replaced with the <a href="../Units/ClipperLib/Classes/PolyTree/_Body.htm">PolyTree</a> / <a href="../Units/ClipperLib/Classes/PolyNode/_Body.htm">PolyNode</a>
+classes to more fully represent the parent-child relationships of the
+polygons returned by Clipper's <a href="../Units/ClipperLib/Classes/Clipper/Methods/Execute.htm">Execute</a>
+method.
+
+ </ul> </li>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+New <a href="../Units/ClipperLib/Functions/CleanPolygon.htm">CleanPolygon</a>
+and <a href="../Units/ClipperLib/Functions/CleanPolygons.htm">CleanPolygons</a>
+functions.
+
+ </ul> </li>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Another orientation bug fixed.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v5.0.2 (30 December 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Significant fixes in and tidy of the internal Int128 class (which is
+used only when polygon coordinate values are greater than ±0x3FFFFFFF
+(~1.07e9)).
+
+ </ul> </li>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+The <a href="../Units/ClipperLib/Functions/Area.htm">Area</a> function
+has been updated with a faster algorithm.
+
+ </ul> </li>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+Documentation updates. The newish but undocumented 'CheckInputs'
+parameter of the <a href="../Units/ClipperLib/Functions/OffsetPaths.htm">OffsetPolygons</a>
+function has been renamed 'AutoFix' and documented too. The comments on
+ <a href="./Rounding.htm">rounding</a> have also been improved
+(ie clearer and expanded).
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.10.0 (25 December 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Orientation bugs should now be resolved (finally!).
+
+ </ul> </li>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Bug in Int128 class.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.9.8 (2 December 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Further fixes to rare Orientation bug.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.9.7 (29 November 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Bug that very rarely returned a wrong polygon orientation.
+
+ </ul> </li>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Obscure bug affecting OffsetPolygons when using jtRound for the
+JoinType parameter and when polygons also contain very large coordinate
+values.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.9.6 (9 November 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Another obscure bug related to joining intersections.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.9.4 (2 November 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Bugs in Int128 class occasionally causing wrong orientations.
+
+ </ul> </li>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Further fixes related to joining intersections.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.9.0 (9 October 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Obscure bug related to joining intersections.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.8.9 (25 September 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Obscure bug related to precision of intersections.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.8.8 (30 August 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Fixed bug in OffsetPolygons function introduced in version 4.8.5.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.8.7 (24 August 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+ReversePolygon function in C++ translation was broken.
+
+ </ul> </li>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Two obscure bugs affecting orientation fixed too.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.8.6 (11 August 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Potential for memory overflow errors when using ExPolygons structure.
+
+ </ul> </li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+The polygon coordinate range has been reduced to ± 0x3FFFFFFFFFFFFFFF
+(4.6e18).
+
+ </ul> </li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+ReversePolygons function was misnamed ReversePoints in C++.
+
+ </ul> </li>
+
+ </ul>
+ <ul>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+SimplifyPolygon function now takes a PolyFillType parameter.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.8.5 (15 July 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Potential for memory overflow errors in <a href="../Units/ClipperLib/Functions/OffsetPaths.htm">OffsetPolygons</a>().
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.8.4 (1 June 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Another obscure bug affecting ExPolygons structure.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.8.3 (27 May 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Obscure bug causing incorrect removal of a vertex.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.8.2 (21 May 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Obscure bug could cause an exception when using ExPolygon structure.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.8.1 (12 May 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+Code tidy and minor bug fixes.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.8.0 (30 April 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Occasional errors in orientation fixed.
+
+ </ul> </li>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+Added notes on <a href="Rounding.htm">rounding</a> to the
+documentation.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.7.6 (11 April 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Fixed a bug in the <a href="../Units/ClipperLib/Functions/Orientation.htm">Orientation</a>
+function (affecting C# translations only).
+
+ </ul> </li>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+Minor documentation update.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.7.5 (28 March 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Fixed a recently introduced bug that occasionally caused an unhandled
+exception in C++ and C# translations.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.7.1 (3 March 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Rare crash when JoinCommonEdges joined polygons that 'cancelled' each
+other.
+
+ </ul> </li>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Clipper's internal Orientation method occasionally returned wrong
+result.
+
+ </ul> </li>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+Improved C# code (thanks to numerous suggestions from David Piepgrass)
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.7 (10 February 2012)</h2>
+ <ul>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+Improved the joining of output polygons sharing a common edge.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.6.4 (8 December 2011)</h2>
+ <ul>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+Added <a href="../Units/ClipperLib/Functions/SimplifyPolygon.htm">SimplifyPolygon</a>
+and <a href="../Units/ClipperLib/Functions/SimplifyPolygons.htm">SimplifyPolygons</a>
+functions.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.6 (29 October 2011)</h2>
+ <ul>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+Support for <b>Positive</b> and <b>Negative</b> <a href="../Units/ClipperLib/Types/PolyFillType.htm">polygon fill types </a>(in addition to the EvenOdd and NonZero fill types).
+
+ </ul> </li>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+The <a href="../Units/ClipperLib/Functions/OffsetPaths.htm">OffsetPolygons</a>
+function was generating the occasional artefact when 'shrinking'
+polygons.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.5.5 (6 October 2011)</h2>
+ <ul>
+
+ <li>
+ <h2>Bugfix:</h2>
+ <ul class="dots">
+Fixed an obscure bug in Clipper's JoinCommonEdges method.
+
+ </ul> </li>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+Replaced IsClockwise function with <a href="../Units/ClipperLib/Functions/Orientation.htm">Orientation</a>
+function. The orientation issues affecting OffsetPolygons should
+finally be resolved.
+
+ </ul> </li>
+
+ <li>
+ <h2>Change:</h2>
+ <ul class="dots">
+The <a href="../Units/ClipperLib/Functions/Area.htm">Area</a> function
+once again returns the <em>signed</em> area.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.4.0 (6 August 2011)</h2>
+ <ul>
+
+ <li>
+ <h2>BugFix:</h2>
+ <ul class="dots">
+A number of minor bugfixes that mostly affected the new ExPolygons
+structure.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.3.0 (17 June 2011)</h2>
+ <ul>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+ExPolygons structure that explicitly associates 'hole' polygons with
+their 'outer' container polygons.
+
+ </ul> </li>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+ <a href="../Units/ClipperLib/Classes/Clipper/Methods/Execute.htm">Execute</a>
+method now overloaded so the solution parameter can be either <a href="../Units/ClipperLib/Types/Paths.htm">Polygons</a> or
+ExPolygons.
+
+ </ul> </li>
+
+ <li>
+ <h2>Bug fix:</h2>
+ <ul class="dots">
+Fixed a rare bug in the orientation of solution polygons.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.2.4 (26 April 2011)</h2>
+ <ul>
+
+ <li>
+ <h2>Update:</h2>
+ <ul class="dots">
+Input polygon coordinates can now contain the full range of signed
+64bit integers (ie +/-9,223,372,036,854,775,807). This means that
+floating point values can be converted to and from Clipper's 64bit
+vertex structure (<a href="../Units/ClipperLib/Types/IntPoint.htm">IntPoint</a>)
+and still retain a precision of up to 18 decimal places. However, since
+the large-integer math that supports this expanded range imposes a
+small cost on performance (~15%), a new property UseFullCoordinateRange
+has been added to the Clipper class to allow users the choice of
+whether or not to use this expanded coordinate range. If this property
+is disabled, coordinate values are restricted to +/-1,500,000,000. (By
+default, this property is enabled.)
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v4.0 (4 April 2011)</h2>
+ <ul>
+
+ <li>
+ <h2>Major update:</h2>
+ <ul class="dots">
+Clipper is a major rewrite of earlier versions. The biggest change is
+that floating point values are no longer used, except for the storing
+of edge slope values. The main benefit of this is the issue of
+numerical robustness has been addressed. Due to other major code
+improvements Clipper v4 is approximately 40% faster than Clipper v3.
+
+ </ul> </li>
+
+ <li>
+ <h2>Changes:</h2>
+ <ul class="dots">
+The AddPolyPolygon method has been renamed to AddPolygons, and the
+IgnoreOrientation property has been removed. The clipper_misc library
+has been merged back into the clipper library.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v2.8 (20 November 2010)</h2>
+ <ul>
+
+ <li>
+ <h2>Updated:</h2>
+ <ul class="dots">
+Output polygons which previously shared a common edge are now merged.
+
+ </ul> </li>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+Added support module for Cairo Graphics Library (with accompanying
+demo).
+
+ </ul> </li>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+Added C# and C++ demos.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v2.522 (15 October 2010)</h2>
+ <ul>
+
+ <li>
+ <h2>Added:</h2>
+ <ul class="dots">
+Added C# translation (thanks to Olivier Lejeune) and a link to Ruby
+bindings (thanks to Mike Owens).
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v2.0 (31 July 2010)</h2>
+ <ul>
+
+ <li>
+ <h2>Major update:</h2>
+ <ul class="dots">
+Clipper now processes polygons using both the Even-Odd (alternate) and
+Non-Zero (winding) filling rules.
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v1.4c (16 June 2010)</h2>
+ <ul>
+
+ <li>
+ <h2>Additions:</h2>
+ <ul class="dots">
+Added Delphi and C++ units to support the AGG graphics library
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v1.2s (2 June 2010)</h2>
+ <ul>
+
+ <li>
+ <h2>Additions:</h2>
+ <ul class="dots">
+C++ translation of Delphi code
+
+ </ul> </li>
+
+ </ul> </li>
+
+ <li>
+ <h2>v1.0 (9 May 2010) - Initial public release</h2> </li>
+
+
+ </ul>
+
+<img src="../../Images/_buttons.gif" height="1" width="1">
+
+
+ <h2 id="Auto-SeeAlso">See Also</h2>
+ <p class="Body"><a href="Deprecated.htm">Deprecated</a>, <a href="Rounding.htm">Rounding</a>, <a href="../Units/ClipperLib/Classes/Clipper/Methods/Constructor.htm">Clipper.Constructor</a>, <a href="../Units/ClipperLib/Classes/Clipper/Methods/Execute.htm">Clipper.Execute</a>, <a href="../Units/ClipperLib/Classes/Clipper/Properties/ZFillFunction.htm">Clipper.ZFillFunction</a>, <a href="../Units/ClipperLib/Classes/ClipperBase/Methods/AddPath.htm">ClipperBase.AddPath</a>, <a href="../Units/ClipperLib/Classes/ClipperBase/Methods/AddPaths.htm">ClipperBase.AddPaths</a>, <a href="../Units/ClipperLib/Classes/ClipperOffset/_Body.htm">ClipperOffset</a>, <a href="../Units/ClipperLib/Classes/ClipperOffset/Methods/Execute.htm">ClipperOffset.Execute</a>, <a href="../Units/ClipperLib/Classes/PolyNode/_Body.htm">PolyNode</a>, <a href="../Units/ClipperLib/Classes/PolyTree/_Body.htm">PolyTree</a>, <a href="../Units/ClipperLib/Functions/Area.htm">Area</a>, <a href="../Units/ClipperLib/Functions/CleanPolygon.htm">CleanPolygon</a>, <a href="../Units/ClipperLib/Functions/CleanPolygons.htm">CleanPolygons</a>, <a href="../Units/ClipperLib/Functions/ClosedPathsFromPolyTree.htm">ClosedPathsFromPolyTree</a>, <a href="../Units/ClipperLib/Functions/MinkowskiDiff.htm">MinkowskiDiff</a>, <a href="../Units/ClipperLib/Functions/MinkowskiSum.htm">MinkowskiSum</a>, <a href="../Units/ClipperLib/Functions/OffsetPaths.htm">OffsetPaths</a>, <a href="../Units/ClipperLib/Functions/OpenPathsFromPolyTree.htm">OpenPathsFromPolyTree</a>, <a href="../Units/ClipperLib/Functions/Orientation.htm">Orientation</a>, <a href="../Units/ClipperLib/Functions/PointInPolygon.htm">PointInPolygon</a>, <a href="../Units/ClipperLib/Functions/PolyTreeToPaths.htm">PolyTreeToPaths</a>, <a href="../Units/ClipperLib/Functions/SimplifyPolygon.htm">SimplifyPolygon</a>, <a href="../Units/ClipperLib/Functions/SimplifyPolygons.htm">SimplifyPolygons</a>, <a href="../Units/ClipperLib/PreProcessor/Defines.htm">Defines</a>, <a href="../Units/ClipperLib/Types/CInt.htm">CInt</a>, <a href="../Units/ClipperLib/Types/InitOptions.htm">InitOptions</a>, <a href="../Units/ClipperLib/Types/IntPoint.htm">IntPoint</a>, <a href="../Units/ClipperLib/Types/Path.htm">Path</a>, <a href="../Units/ClipperLib/Types/Paths.htm">Paths</a>, <a href="../Units/ClipperLib/Types/PolyFillType.htm">PolyFillType</a>, <a href="../Units/ClipperLib/Types/ZFillCallback.htm">ZFillCallback</a></p>
+
+ <p class="Copyright" id="auto"> <br><br> Copyright ©2010-2014 Angus Johnson - Clipper 6.2.1 - Help file built on 1-November-2014 <br><br> </p>
+
+</body>
+
+</html>
\ No newline at end of file diff --git a/upstream/clipper-6.4.2/Documentation/Docs/Overview/Deprecated.htm b/upstream/clipper-6.4.2/Documentation/Docs/Overview/Deprecated.htm new file mode 100644 index 0000000..7a8f254 --- /dev/null +++ b/upstream/clipper-6.4.2/Documentation/Docs/Overview/Deprecated.htm @@ -0,0 +1,69 @@ +<html>
+
+<head>
+
+ <script type="text/javascript" src="../../Scripts/jquery.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shCore.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushDelphi.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushCpp.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushCSharp.js">
+ </script>
+
+ <link type="text/css" rel="stylesheet" href="../../Scripts/SyntaxHighlighter/styles/shCoreDefault.css">
+
+ <link type="text/css" rel="stylesheet" href="../../Scripts/SyntaxHighlighter/styles/shThemeDefault.css">
+
+
+ <title>Deprecated</title>
+
+ <link rel="stylesheet" href="../../Styles/default.css" type="text/css">
+
+
+ <script type="text/javascript" src="../../Scripts/bootstrap.js">
+ </script>
+
+</head>
+
+<body bgcolor="#FFFFFF">
+
+ <!-- THIS FILE HAS BEEN AUTOMATICALLY PROCESSED FROM A SOURCE COPY -->
+
+ <!-- DO NOT EDIT MANUALLY !!! -->
+
+ <table class="Banner" cellspacing="0" cellpadding="0" border="1" bordercolorlight="#303080" bordercolordark="#7070B0">
+ <tr>
+ <td class="Banner" nowrap=""><a href="../_Body.htm" class="Banner"><img src="../../Images/_Home.gif" align="absmiddle">Home</a>
+ </td>
+ <td class="Banner" nowrap=""><a href="_Body.htm" class="Banner">Overview</a>
+ </td>
+ <td class="Banner" width="100%" align="right"><img src="../../Images/_Project_Logo.gif" align="absmiddle">
+ </td>
+ </tr>
+ </table>
+ <h1>Deprecated</h1>
+
+
+ <p class="Body"> The precompiler directive <b>'use_deprecated'</b> allows users to update the Clipper library without being forced to make immediate changes to code that accesses the library. Depricated code will be removed in a future update. (Enabled by default.)<br><br> <b>Deprecated types and functions:</b><br><br> All deprecated code has been removed from version 6.2.0.
+ <!-- <table cellspacing="2" cellpadding="2" border="0">
+<tr>
+ <td width="140px"> </td>
+ <td>Replaced by </td>
+</tr>
+</table>
+ --> </p>
+
+
+
+ <p class="Copyright" id="auto"> <br><br> Copyright ©2010-2014 Angus Johnson - Clipper 6.2.1 - Help file built on 1-November-2014 <br><br> </p>
+
+</body>
+
+</html>
\ No newline at end of file diff --git a/upstream/clipper-6.4.2/Documentation/Docs/Overview/Example.htm b/upstream/clipper-6.4.2/Documentation/Docs/Overview/Example.htm new file mode 100644 index 0000000..ded5dd5 --- /dev/null +++ b/upstream/clipper-6.4.2/Documentation/Docs/Overview/Example.htm @@ -0,0 +1,234 @@ +<html>
+
+<head>
+
+ <script type="text/javascript" src="../../Scripts/jquery.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shCore.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushDelphi.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushCpp.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushCSharp.js">
+ </script>
+
+ <link type="text/css" rel="stylesheet" href="../../Scripts/SyntaxHighlighter/styles/shCoreDefault.css">
+
+ <link type="text/css" rel="stylesheet" href="../../Scripts/SyntaxHighlighter/styles/shThemeDefault.css">
+
+
+ <title>Example</title>
+
+ <link rel="stylesheet" href="../../Styles/default.css" type="text/css">
+
+
+ <script type="text/javascript" src="../../Scripts/bootstrap.js">
+ </script>
+
+</head>
+
+<body bgcolor="#FFFFFF">
+
+ <!-- THIS FILE HAS BEEN AUTOMATICALLY PROCESSED FROM A SOURCE COPY -->
+
+ <!-- DO NOT EDIT MANUALLY !!! -->
+
+ <table class="Banner" cellspacing="0" cellpadding="0" border="1" bordercolorlight="#303080" bordercolordark="#7070B0">
+ <tr>
+ <td class="Banner" nowrap=""><a href="../_Body.htm" class="Banner"><img src="../../Images/_Home.gif" align="absmiddle">Home</a>
+ </td>
+ <td class="Banner" nowrap=""><a href="_Body.htm" class="Banner">Overview</a>
+ </td>
+ <td class="Banner" width="100%" align="right"><img src="../../Images/_Project_Logo.gif" align="absmiddle">
+ </td>
+ </tr>
+ </table>
+ <h1>Example</h1>
+
+
+ <table cellspacing="0" cellpadding="0" border="0" align="left" style="margin: 0;" width="600px">
+ <th align="left">Delphi Code Sample:
+ </th>
+
+ <tr>
+ <td class="White">
+
+ <pre class="brush: delphi;">
+ uses
+ graphics32, clipper;
+
+ function GetEllipsePoints(bounds: TIntRect): TPath;
+ begin
+ //code to create an elliptical polygon here
+ end;
+
+ procedure DrawPolygons(polys: TPaths; color: TColor32);
+ begin
+ //code to display the polygons here
+ end;
+
+ var
+ sub, clp, sol: TPaths;
+ begin
+
+ //set up the subject and clip polygons ...
+ setlength(sub, 3);
+ sub[0] := GetEllipsePoints(IntRect(100,100,300,300));
+ sub[1] := GetEllipsePoints(IntRect(125,130,275,180));
+ sub[2] := GetEllipsePoints(IntRect(125,220,275,270));
+
+ setlength(clp, 1);
+ clp[0] := GetEllipsePoints(IntRect(140,70,220,320));
+
+ //display the subject and clip polygons ...
+ DrawPolygons(sub, 0x8033FFFF);
+ DrawPolygons(clp, 0x80FFFF33);
+
+ //get the intersection of the subject and clip polygons ...
+ with TClipper.Create do
+ try
+ AddPaths(sub, ptSubject, true);
+ AddPaths(clp, ptClip, true);
+ Execute(ctIntersection, sol, pftEvenOdd, pftEvenOdd);
+ finally
+ free;
+ end;
+
+ //finally draw the intersection polygons ...
+ DrawPolygons(sol, 0x40808080);
+ </pre>
+
+ </td>
+ </tr>
+
+ </table>
+ <div style="clear:both"> </div>
+
+
+
+ <table cellspacing="0" cellpadding="0" border="0" align="left" style="margin: 0;" width="600px">
+ <th align="left">C++ Code Sample:
+ </th>
+
+ <tr>
+ <td class="White">
+
+ <pre class="brush: cpp;">
+ #include "clipper.hpp"
+
+ ...
+
+ //from clipper.hpp ...
+ //typedef long long cInt;
+ //struct IntPoint {cInt X; cInt Y;};
+ //typedef std::vector<IntPoint> Path;
+ //typedef std::vector<Polygon> Paths;
+
+ using namespace ClipperLib;
+
+ void GetEllipsePoints(IntRect& bounds, Path& p)
+ {/* ... */}
+
+ void DrawPolygons(Paths& p, unsigned color)
+ {/* ... */}
+
+ int main()
+ {
+ //set up the subject and clip polygons ...
+ Paths sub(3);
+ GetEllipsePoints(IntRect(100,100,300,300), sub[0]);
+ GetEllipsePoints(IntRect(125,130,275,180), sub[1]);
+ GetEllipsePoints(IntRect(125,220,275,270), sub[2]);
+
+ Paths clp(1);
+ GetEllipsePoints(IntRect(140,70,220,320), clp[0]);
+
+ //display the subject and clip polygons ...
+ DrawPolygons(sub, 0x8033FFFF);
+ DrawPolygons(clp, 0x80FFFF33);
+
+ //get the intersection of the subject and clip polygons ...
+ Clipper clpr;
+ clpr.AddPaths(sub, ptSubject, true);
+ clpr.AddPaths(clp, ptClip, true);
+ Paths solution;
+ clpr.Execute(ctIntersection, solution, pftEvenOdd, pftEvenOdd);
+
+ //finally draw the intersection polygons ...
+ DrawPolygons(solution, 0x40808080);
+ }
+ </pre>
+
+
+ </td>
+ </tr>
+
+ </table>
+ <div style="clear:both"> </div>
+
+
+ <table cellspacing="0" cellpadding="0" border="0" align="left" style="margin: 0;" width="600px">
+ <th align="left">C# Code Sample:
+ </th>
+
+ <tr>
+ <td class="White">
+
+ <pre class="brush: csharp;">
+ ...
+ using ClipperLib;
+
+ ...
+ using Path = List<IntPoint>;
+ using Paths = List<List<IntPoint>>;
+
+ static Path GetEllipsePoints(IntRect bounds)
+ {/* ... */}
+
+ static void DrawPolygons(Path p, uint color)
+ {/* ... */}
+
+ static void Main(string[] args)
+ {
+ Paths subjs = new Paths(3);
+ subjs.Add(GetEllipsePoints(new IntRect(100,100,300,300)));
+ subjs.Add(GetEllipsePoints(new IntRect(125,130,275,180)));
+ subjs.Add(GetEllipsePoints(new IntRect(125,220,275,270)));
+
+ Paths clips = new Paths(1);
+ clips.Add(GetEllipsePoints(new IntRect(140,70,220,320)));
+
+ DrawPolygons(subjs, 0x8033FFFF);
+ DrawPolygons(clips, 0x80FFFF33);
+
+ Paths solution = new Paths();
+ Clipper c = new Clipper();
+ c.AddPaths(subjs, PolyType.ptSubject, true);
+ c.AddPaths(clips, PolyType.ptClip, true);
+ c.Execute(ClipType.ctIntersection, solution);
+
+ DrawPolygons(solution, 0x40808080);
+ }
+ </pre>
+
+ </td>
+ </tr>
+
+ </table>
+
+ <div style="clear:both"> </div>
+ <img src="../../Images/sample1.png" alt="" border="0">
+
+
+
+ <p class="Copyright" id="auto"> <br><br> Copyright ©2010-2014 Angus Johnson - Clipper 6.2.1 - Help file built on 1-November-2014 <br><br> </p>
+
+</body>
+
+
+</html>
\ No newline at end of file diff --git a/upstream/clipper-6.4.2/Documentation/Docs/Overview/FAQ.htm b/upstream/clipper-6.4.2/Documentation/Docs/Overview/FAQ.htm new file mode 100644 index 0000000..91459b9 --- /dev/null +++ b/upstream/clipper-6.4.2/Documentation/Docs/Overview/FAQ.htm @@ -0,0 +1,104 @@ +<html>
+
+<head>
+
+ <script type="text/javascript" src="../../Scripts/jquery.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shCore.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushDelphi.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushCpp.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushCSharp.js">
+ </script>
+
+ <link type="text/css" rel="stylesheet" href="../../Scripts/SyntaxHighlighter/styles/shCoreDefault.css">
+
+ <link type="text/css" rel="stylesheet" href="../../Scripts/SyntaxHighlighter/styles/shThemeDefault.css">
+
+
+ <title>FAQ</title>
+
+ <link rel="stylesheet" href="../../Styles/default.css" type="text/css">
+
+
+ <script type="text/javascript" src="../../Scripts/bootstrap.js">
+ </script>
+
+</head>
+
+<body bgcolor="#FFFFFF">
+
+ <!-- THIS FILE HAS BEEN AUTOMATICALLY PROCESSED FROM A SOURCE COPY -->
+
+ <!-- DO NOT EDIT MANUALLY !!! -->
+
+ <table class="Banner" cellspacing="0" cellpadding="0" border="1" bordercolorlight="#303080" bordercolordark="#7070B0">
+ <tr>
+ <td class="Banner" nowrap=""><a href="../_Body.htm" class="Banner"><img src="../../Images/_Home.gif" align="absmiddle">Home</a>
+ </td>
+ <td class="Banner" nowrap=""><a href="_Body.htm" class="Banner">Overview</a>
+ </td>
+ <td class="Banner" width="100%" align="right"><img src="../../Images/_Project_Logo.gif" align="absmiddle">
+ </td>
+ </tr>
+ </table>
+ <h1>FAQ</h1>
+
+
+ <p class="Decl5">Why does Clipper use integer coordinates, not floats?</p>
+
+ <p class="Decl4">This has been done to preserve <a href="http://www.mpi-inf.mpg.de/~kettner/pub/nonrobust_cgta_06.pdf" target="_blank">numerical robustness</a>. Early versions of the library did use floating point coordinates, but it became apparent that floating point imprecision was always going to cause occasional errors.<br><br> </p>
+
+
+ <p class="Decl5">How do I use floating point coordinates with Clipper?</p>
+
+ <p class="Decl4">It's a simple task to multiply your floating point coordinates by a scaling factor (that's typically a power of 10 depending on the desired precision). Then with the solution paths, divide the returned coordinates by this same scaling factor. Clipper accepts integer coordinates as large as ±4.6e18, so it can accommodate very large scaling.<br><br> </p>
+
+
+ <p class="Decl5">Does Clipper handle polygons with holes?</p>
+
+ <p class="Decl4">'Holes' are defined by the specified <a href="../Units/ClipperLib/Types/PolyFillType.htm">polygon filling rule</a>. (See also <a href="../Units/ClipperLib/Classes/Clipper/Methods/Execute.htm">Clipper.Execute</a>)<br><br> </p>
+
+
+ <p class="Decl5">Some polygons in the solution share a common edge. Is this a bug?</p>
+
+ <p class="Decl4"> No, though this should happen rarely as of version 6. (See <a href="../Units/ClipperLib/Classes/Clipper/Methods/Execute.htm">Clipper.Execute</a> for more about this.)<br><br> </p>
+
+
+ <p class="Decl5">I have lots of polygons that I want to 'union'. Can I do this in one operation?</p>
+
+ <p class="Decl4"> Yes. Just add all the polygons as subject polygons to the Clipper object. (You don't have to assign both subject and clip polygons.)<br><br> </p>
+
+
+ <p class="Decl5"> <img src="../../Images/kangaroo_small.png" width="292" height="292" alt="" align="right"> The polygons produced by <a href="../Units/ClipperLib/Classes/ClipperOffset/_Body.htm">ClipperOffset</a> have tiny artefacts? Could this be a bug?</p>
+
+ <p class="Decl4"> Make sure the input polygons don't self-intersect. Tiny self-intersections can sometimes be produced by previous clipping operations. These can be cleaned up using the <a href="../Units/ClipperLib/Functions/CleanPolygon.htm">CleanPolygon</a> and <a href="../Units/ClipperLib/Functions/CleanPolygons.htm">CleanPolygons</a> functions. Also, make sure the supplied polygons don't overlap. If they do, offset these separately. Finally, the precision of the input coordinates may be a problem. Because the Clipper Library only operates on integer coordinates, you may need to scale your coordinates (eg by a factor of 10) to improve precision. <br><br> </p>
+
+
+ <p class="Decl5">Is there an easy way to reverse polygon orientations?</p>
+
+ <p class="Decl4"> Yes, see <a href="../Units/ClipperLib/Functions/ReversePaths.htm">ReversePaths</a>. <br><br> </p>
+
+<div style="clear:both"> </div>
+
+
+ <p class="Decl5">My drawings contain lots of beziers, ellipses and arcs. How can I perform clipping operations on these?</p>
+
+ <p class="Decl4"> You'll have to convert them to 'flattened' paths. For an example of how this can be done (and even reconstructed back into beziers, arcs etc), see the CurvesDemo application included in this library. <br><br> </p>
+
+
+ <h2 id="Auto-SeeAlso">See Also</h2>
+ <p class="Body"><a href="../Units/ClipperLib/Classes/Clipper/Methods/Execute.htm">Clipper.Execute</a>, <a href="../Units/ClipperLib/Classes/ClipperOffset/_Body.htm">ClipperOffset</a>, <a href="../Units/ClipperLib/Functions/CleanPolygon.htm">CleanPolygon</a>, <a href="../Units/ClipperLib/Functions/CleanPolygons.htm">CleanPolygons</a>, <a href="../Units/ClipperLib/Functions/ReversePaths.htm">ReversePaths</a>, <a href="../Units/ClipperLib/Types/PolyFillType.htm">PolyFillType</a></p>
+
+ <p class="Copyright" id="auto"> <br><br> Copyright ©2010-2014 Angus Johnson - Clipper 6.2.1 - Help file built on 1-November-2014 <br><br> </p>
+
+</body>
+
+
+</html>
\ No newline at end of file diff --git a/upstream/clipper-6.4.2/Documentation/Docs/Overview/License.htm b/upstream/clipper-6.4.2/Documentation/Docs/Overview/License.htm new file mode 100644 index 0000000..928dda8 --- /dev/null +++ b/upstream/clipper-6.4.2/Documentation/Docs/Overview/License.htm @@ -0,0 +1,75 @@ +<html>
+
+<head>
+
+ <script type="text/javascript" src="../../Scripts/jquery.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shCore.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushDelphi.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushCpp.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushCSharp.js">
+ </script>
+
+ <link type="text/css" rel="stylesheet" href="../../Scripts/SyntaxHighlighter/styles/shCoreDefault.css">
+
+ <link type="text/css" rel="stylesheet" href="../../Scripts/SyntaxHighlighter/styles/shThemeDefault.css">
+
+
+ <title>License</title>
+
+ <link rel="stylesheet" href="../../Styles/default.css" type="text/css">
+
+
+ <script type="text/javascript" src="../../Scripts/bootstrap.js">
+ </script>
+
+</head>
+
+<body bgcolor="#FFFFFF">
+
+ <!-- THIS FILE HAS BEEN AUTOMATICALLY PROCESSED FROM A SOURCE COPY -->
+
+ <!-- DO NOT EDIT MANUALLY !!! -->
+
+ <table class="Banner" cellspacing="0" cellpadding="0" border="1" bordercolorlight="#303080" bordercolordark="#7070B0">
+ <tr>
+ <td class="Banner" nowrap=""><a href="../_Body.htm" class="Banner"><img src="../../Images/_Home.gif" align="absmiddle">Home</a>
+ </td>
+ <td class="Banner" nowrap=""><a href="_Body.htm" class="Banner">Overview</a>
+ </td>
+ <td class="Banner" width="100%" align="right"><img src="../../Images/_Project_Logo.gif" align="absmiddle">
+ </td>
+ </tr>
+ </table>
+ <h1>License</h1>
+
+
+ <p class="Body"> The Clipper Library (including Delphi, C++ & C# source code, other accompanying code, examples and documentation), hereafter called "the Software", has been released under the following license, terms and conditions:</p>
+
+
+ <p class="Body">Boost Software License - Version 1.0 - August 17th, 2003<br> <a href="http://www.boost.org/LICENSE_1_0.txt" target="_blank">http://www.boost.org/LICENSE_1_0.txt</a></p>
+
+
+ <p class="Body">Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the Software covered by this license to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:</p>
+
+
+ <p class="Body">The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.</p>
+
+
+ <p class="Body">THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p>
+
+
+
+ <p class="Copyright" id="auto"> <br><br> Copyright ©2010-2014 Angus Johnson - Clipper 6.2.1 - Help file built on 1-November-2014 <br><br> </p>
+
+</body>
+
+
+</html>
\ No newline at end of file diff --git a/upstream/clipper-6.4.2/Documentation/Docs/Overview/Rounding.htm b/upstream/clipper-6.4.2/Documentation/Docs/Overview/Rounding.htm new file mode 100644 index 0000000..cb4d62b --- /dev/null +++ b/upstream/clipper-6.4.2/Documentation/Docs/Overview/Rounding.htm @@ -0,0 +1,71 @@ +<html>
+
+<head>
+
+ <script type="text/javascript" src="../../Scripts/jquery.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shCore.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushDelphi.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushCpp.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushCSharp.js">
+ </script>
+
+ <link type="text/css" rel="stylesheet" href="../../Scripts/SyntaxHighlighter/styles/shCoreDefault.css">
+
+ <link type="text/css" rel="stylesheet" href="../../Scripts/SyntaxHighlighter/styles/shThemeDefault.css">
+
+
+ <title>Rounding</title>
+
+ <link rel="stylesheet" href="../../Styles/default.css" type="text/css">
+
+
+ <script type="text/javascript" src="../../Scripts/bootstrap.js">
+ </script>
+
+</head>
+
+<body bgcolor="#FFFFFF">
+
+ <!-- THIS FILE HAS BEEN AUTOMATICALLY PROCESSED FROM A SOURCE COPY -->
+
+ <!-- DO NOT EDIT MANUALLY !!! -->
+
+ <table class="Banner" cellspacing="0" cellpadding="0" border="1" bordercolorlight="#303080" bordercolordark="#7070B0">
+ <tr>
+ <td class="Banner" nowrap=""><a href="../_Body.htm" class="Banner"><img src="../../Images/_Home.gif" align="absmiddle">Home</a>
+ </td>
+ <td class="Banner" nowrap=""><a href="_Body.htm" class="Banner">Overview</a>
+ </td>
+ <td class="Banner" width="100%" align="right"><img src="../../Images/_Project_Logo.gif" align="absmiddle">
+ </td>
+ </tr>
+ </table>
+ <h1>Rounding</h1>
+
+
+ <p class="Body"> By using an integer type for polygon coordinates, the Clipper Library has been able to avoid problems of <a href="http://www.mpi-inf.mpg.de/~kettner/pub/nonrobust_cgta_06.pdf"><b>numerical robustness</b></a> that can cause havoc with geometric computations. Problems associated with integer <b>rounding</b> and their possible solutions are discussed below.<br><br> <img src="../../Images/clipper_rounding.png" width="488" height="365" alt="" align="left"> <span class="maroon">It's important to stress at the outset that rounding causes vertices to move fractions of a unit away from their 'true' positions. Nevertheless, the resulting imprecision can be very effectively managed by appropriate scaling.</span><br><br> The Clipper Library supports scaling to <span class="maroon">very high degrees of precision</span> by accepting integer coordinate values in the range ±0x3FFFFFFFFFFFFFFF (± 4.6e+18).<br><br> Another complication of using a discrete numbers (as opposed to <a href="http://en.wikipedia.org/wiki/Real_number" target="_blank">real numbers</a>) is that very occasionally tiny <b>self-intersection</b> artefacts arise. In the unscaled image on the left (where one unit equals one pixel), the area of intersection of two polygons has been highlighted in bright green.<br><br> </p>
+
+
+ <p class="Body" style="clear='both'"> <img src="../../Images/clipper_rounding2.png" width="440" height="316" alt="" align="right"><br><br> A 30X 'close up' of the lower points of intersection of these same two polygons shows the presence of a tiny self-intersecting artefact. The three 'black dots' highlight the actual points of intersection (with their fractional coordinates displayed). The 'red dots' show where these points of intersection are located once rounding is applied. With a little care you can see that rounding reverses the orientation of these vertices and causes a tiny self-intersecting artefact.<br><br> Although these tiny self-intersections are uncommon, if it's deemed necessary, they are best removed with <a href="../Units/ClipperLib/Functions/CleanPolygons.htm">CleanPolygons</a>. (Setting Clipper's <a href="../Units/ClipperLib/Classes/Clipper/Properties/StrictlySimple.htm">StrictlySimple</a> property to true would also address this self-intersection but the tiny (sub-unit) polygon 'artefact' with incorrect orientation would still appear in the solution.) <br><br> </p>
+
+
+ <p class="Body" style="clear='both'"> <img src="../../Images/clipper_rounding4.png" width="292" height="224" alt="" align="left"><br><br> In this final example, the single polygon on the left also has a tiny self-intersection. However, the clipping algorithm sees this vertex (88,50) as simply 'touching' rather than intersecting the right edge of the polygon (though only by a fraction of a unit). Since this intersection won't normally be detected, the clipping solution (eg following a union operation) will still contain this tiny self-intersection. Setting Clipper's <a href="../Units/ClipperLib/Classes/Clipper/Properties/StrictlySimple.htm">StrictlySimple</a> property to true avoids this uncommon problem.<br><br> </p>
+<div style="clear='both'"></div>
+
+
+ <h2 id="Auto-SeeAlso">See Also</h2>
+ <p class="Body"><a href="../Units/ClipperLib/Classes/Clipper/Properties/StrictlySimple.htm">Clipper.StrictlySimple</a>, <a href="../Units/ClipperLib/Functions/CleanPolygons.htm">CleanPolygons</a></p>
+
+ <p class="Copyright" id="auto"> <br><br> Copyright ©2010-2014 Angus Johnson - Clipper 6.2.1 - Help file built on 1-November-2014 <br><br> </p>
+
+</body>
+
+</html>
\ No newline at end of file diff --git a/upstream/clipper-6.4.2/Documentation/Docs/Overview/_Body.htm b/upstream/clipper-6.4.2/Documentation/Docs/Overview/_Body.htm new file mode 100644 index 0000000..5135549 --- /dev/null +++ b/upstream/clipper-6.4.2/Documentation/Docs/Overview/_Body.htm @@ -0,0 +1,106 @@ +<html>
+
+<head>
+
+ <script type="text/javascript" src="../../Scripts/jquery.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shCore.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushDelphi.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushCpp.js">
+ </script>
+
+ <script type="text/javascript" src="../../Scripts/SyntaxHighlighter/scripts/shBrushCSharp.js">
+ </script>
+
+ <link type="text/css" rel="stylesheet" href="../../Scripts/SyntaxHighlighter/styles/shCoreDefault.css">
+
+ <link type="text/css" rel="stylesheet" href="../../Scripts/SyntaxHighlighter/styles/shThemeDefault.css">
+
+
+ <title>Overview</title>
+
+ <link rel="stylesheet" href="../../Styles/default.css" type="text/css">
+
+ <meta name="keywords" content="clipper,clipping,clip,intersection,union,polygon,offset,library,algorithm,line">
+
+
+ <script type="text/javascript" src="../../Scripts/bootstrap.js">
+ </script>
+
+</head>
+
+<body bgcolor="#FFFFFF">
+
+ <!-- THIS FILE HAS BEEN AUTOMATICALLY PROCESSED FROM A SOURCE COPY -->
+
+ <!-- DO NOT EDIT MANUALLY !!! -->
+
+ <table class="Banner" cellspacing="0" cellpadding="0" border="1" bordercolorlight="#303080" bordercolordark="#7070B0">
+ <tr>
+ <td class="Banner" nowrap=""><a href="../_Body.htm" class="Banner"><img src="../../Images/_Home.gif" align="absmiddle">Home</a>
+ </td>
+ <td class="Banner" width="100%" align="right"><img src="../../Images/_Project_Logo.gif" align="absmiddle">
+ </td>
+ </tr>
+ </table>
+ <h1>Overview</h1>
+
+
+ <p class="Body"> The <a href="../_Body.htm"><b>Clipper Library</b></a> performs <b><a href="../Units/ClipperLib/Types/ClipType.htm">clipping</a></b>, and <a href="../Units/ClipperLib/Classes/ClipperOffset/_Body.htm"><b>offsetting</b></a> of both lines and polygons.<br><br> A number of features set Clipper apart from other clipping libraries:
+ <ul>
+
+ <li>it accepts all types of polygons including self-intersecting ones</li>
+
+ <li>it supports multiple polygon filling rules (EvenOdd, NonZero, Positive, Negative)</li>
+
+ <li>it's very fast relative to <a href="http://www.angusj.com/delphi/clipper.php#features" target="_blank">other libraries</a></li>
+
+ <li>it's <a href="http://www.mpi-inf.mpg.de/~kettner/pub/nonrobust_cgta_06.pdf" target="_blank">numerically robust</a></li>
+
+ <li>it also performs line and polygon offsetting</li>
+
+ <li>it's free to use in both freeware and commercial applications</li>
+
+ </ul> <br> </p>
+
+
+ <p class="Body"> <b>Current Version:</b> 6.2.1<br><br> <b>Author & copyright:</b><br> Angus Johnson. Copyright © 2010-2014<br> License, terms and conditions: <a href="./License.htm">Boost Software License</a><br><br> </p>
+
+
+ <p class="Body" id="terminology"> <img src="../../Images/int.png" alt="" border="0" align="right"> <b>Terminology:</b><br>
+ <ul>
+
+ <li><b>Clipping:</b> commonly refers to the process of cutting away from a set of 2-dimensional geometric shapes those parts that are outside a rectangular '<em>clipping</em>' window. This can be achieved by <em>intersecting</em> subject paths (lines and polygons) with a clipping rectangle. In a more general sense, the clipping window need not be rectangular but can be any type of polygon, even multiple polygons. Also, while clipping typically refers to an <em>intersection</em> operation, in this documentation it will refer to any one of the <a href="../Units/ClipperLib/Types/ClipType.htm">four boolean operations</a> (intersection, union, difference and exclusive-or).</li>
+
+ <li><b>Path:</b> is an ordered sequence of vertices defining a single geometric contour that's either a line (an open path) or a polygon (a closed path).</li>
+
+ <li><b>Line:</b> or polyline is an <em>open</em> path containing 2 or more vertices.</li>
+
+ <li><b>Polygon:</b> commonly refers to a two-dimensional region bounded by an outer non-intersecting closed contour. That region may also contain a number of 'holes'. In this documentation however, polygon will simply refer to a <em>closed</em> path.</li>
+
+ <li><b>Contour:</b> synonymous with path.</li>
+
+ <li><b>Hole:</b> is a closed region within a polygon that's not part of the polygon. A 'hole polygon' is a closed path that forms the outer boundaries of a hole.</li>
+
+ <li><b>Polygon Filling Rule:</b> the <a href="../Units/ClipperLib/Types/PolyFillType.htm"><b>filling rule</b></a>, together with a list of closed paths, defines those regions (bounded by paths) that are <em>inside</em> (ie regions 'brush filled' in a graphical display) and those which are <em>outside</em> (ie 'holes').</li>
+
+ </ul><br> </p>
+
+
+ <p class="Body"> <b>Distribution package contents:</b><br><br> The ZIP package contains the Clipper library's source code, a Windows CHM help file, HTML help, and a number of compiled demo applications (with full source code). The library was initially written in <strong>Delphi Pascal</strong> (and compiles with Delphi version 7 or above) but now contains <strong>C++</strong>, <strong>C#</strong> and <strong>Python</strong> translations too. The library's source code in each language is about 5000 lines. The Delphi code contains reasonably extensive comments, but comments are fewer in the C++ and C# code. The included sample applications show how Clipper can be used with the different languages using a number of graphics display libraries including - <b>AGG, Cairo, OpenGL, Graphics32, GDI+</b> and <b>SVG</b>.<br><br> <b>Download Link:</b><br><br> <a href="http://sourceforge.net/projects/polyclipping">SourceForge</a><br><br> <b>References:</b><br><br> The Library is based on but significantly extends Bala Vatti's polygon clipping algorithm as described in <a href="http://portal.acm.org/citation.cfm?id=129906" target="_blank">"A generic solution to polygon clipping"</a>, Communications of the ACM, Vol 35, Issue 7 (July 1992) pp 56-63.<br><br> A section in <a href="http://books.google.com/books?q=vatti+clipping+agoston" target="_blank">"Computer graphics and geometric modeling: implementation and algorithms"</a> by By Max K. Agoston (Springer, 2005) discussing <em>Vatti Polygon Clipping</em> was also helpful in creating the initial Clipper implementation.<br><br> The paper titled <a href="http://www.me.berkeley.edu/~mcmains/pubs/DAC05OffsetPolygon.pdf">"Polygon Offsetting by Computing Winding Numbers"</a> by Chen & McMains (Paper no. DETC2005-85513, ASME 2005. Pages 565-575) contains helpful discussion on the complexities of polygon offsetting together with some solutions.<br><br> </p>
+
+
+ <h2 id="Auto-SeeAlso">See Also</h2>
+ <p class="Body"><a href="../_Body.htm">Source</a>, <a href="License.htm">License</a>, <a href="../Units/ClipperLib/Classes/Clipper/_Body.htm">Clipper</a>, <a href="../Units/ClipperLib/Classes/ClipperOffset/_Body.htm">ClipperOffset</a>, <a href="../Units/ClipperLib/Types/ClipType.htm">ClipType</a>, <a href="../Units/ClipperLib/Types/PolyFillType.htm">PolyFillType</a></p>
+
+ <p class="Copyright" id="auto"> <br><br> Copyright ©2010-2014 Angus Johnson - Clipper 6.2.1 - Help file built on 1-November-2014 <br><br> </p>
+
+</body>
+
+
+</html>
\ No newline at end of file |