1===================================================================== 2Clipper Change Log 3===================================================================== 4v6.4.2 (27 February 2017) Rev 512 5* Several minor bugfixes: #152 #160 #161 #162 6 7v6.4 (2 July 2015) Rev 495 8* Numerous generally minor bugfixes 9 10v6.2.1 (31 October 2014) Rev 482 11* Bugfix in ClipperOffset.Execute where the Polytree.IsHole property 12 was returning incorrect values with negative offsets 13* Very minor improvement to join rounding in ClipperOffset 14* Fixed CPP OpenGL demo. 15 16v6.2.0 (17 October 2014) Rev 477 17* Numerous minor bugfixes, too many to list. 18 (See revisions 454-475 in Sourceforge Repository) 19* The ZFillFunction (custom callback function) has had its parameters 20 changed. 21* Curves demo removed (temporarily). 22* Deprecated functions have been removed. 23 24v6.1.5 (26 February 2014) Rev 460 25* Improved the joining of output polygons sharing a common edge 26 when those common edges are horizontal. 27* Fixed a bug in ClipperOffset.AddPath() which would produce 28 incorrect solutions when open paths were added before closed paths. 29* Minor code tidy and performance improvement 30 31v6.1.4 (6 February 2014) 32* Fixed bugs in MinkowskiSum 33* Fixed minor bug when using Clipper.ForceSimplify. 34* Modified use_xyz callback so that all 4 vertices around an 35 intersection point are now passed to the callback function. 36 37v6.1.3a (22 January 2014) Rev 453 38* Fixed buggy PointInPolygon function (C++ and C# only). 39 Note this bug only affected the newly exported function, the 40 internal PointInPolygon function used by Clipper was OK. 41 42v6.1.3 (19 January 2014) Rev 452 43* Fixed potential endless loop condition when adding open 44 paths to Clipper. 45* Fixed missing implementation of SimplifyPolygon function 46 in C++ code. 47* Fixed incorrect upper range constant for polygon coordinates 48 in Delphi code. 49* Added PointInPolygon function. 50* Overloaded MinkowskiSum function to accommodate multi-contour 51 paths. 52 53v6.1.2 (15 December 2013) Rev 444 54* Fixed broken C++ header file. 55* Minor improvement to joining polygons. 56 57v6.1.1 (13 December 2013) Rev 441 58* Fixed a couple of bugs affecting open paths that could 59 raise unhandled exceptions. 60 61v6.1.0 (12 December 2013) 62* Deleted: Previously deprecated code has been removed. 63* Modified: The OffsetPaths function is now deprecated as it has 64 been replaced by the ClipperOffset class which is much more 65 flexible. 66* Bugfixes: Several minor bugs have been fixed including 67 occasionally an incorrect nesting within the PolyTree structure. 68 69v6.0.0 (30 October 2013) 70* Added: Open path (polyline) clipping. A new 'Curves' demo 71 application showcases this (see the 'Curves' directory). 72* Update: Major improvement in the merging of 73 shared/collinear edges in clip solutions (see Execute). 74* Added: The IntPoint structure now has an optional 'Z' member. 75 (See the precompiler directive use_xyz.) 76* Added: Users can now force Clipper to use 32bit integers 77 (via the precompiler directive use_int32) instead of using 78 64bit integers. 79* Modified: To accommodate open paths, the Polygon and Polygons 80 structures have been renamed Path and Paths respectively. The 81 AddPolygon and AddPolygons methods of the ClipperBase class 82 have been renamed AddPath and AddPaths respectively. Several 83 other functions have been similarly renamed. 84* Modified: The PolyNode Class has a new IsOpen property. 85* Modified: The Clipper class has a new ZFillFunction property. 86* Added: MinkowskiSum and MinkowskiDiff functions added. 87* Added: Several other new functions have been added including 88 PolyTreeToPaths, OpenPathsFromPolyTree and ClosedPathsFromPolyTree. 89* Added: The Clipper constructor now accepts an optional InitOptions 90 parameter to simplify setting properties. 91* Bugfixes: Numerous minor bugs have been fixed. 92* Deprecated: Version 6 is a major upgrade from previous versions 93 and quite a number of changes have been made to exposed structures 94 and functions. To minimize inconvenience to existing library users, 95 some code has been retained and some added to maintain backward 96 compatibility. However, because this code will be removed in a 97 future update, it has been marked as deprecated and a precompiler 98 directive use_deprecated has been defined. 99 100v5.1.6 (23 May 2013) 101* BugFix: CleanPolygon function was buggy. 102* Changed: The behaviour of the 'miter' JoinType has been 103 changed so that when squaring occurs, it's no longer 104 extended up to the miter limit but is squared off at 105 exactly 'delta' units. (This improves the look of mitering 106 with larger limits at acute angles.) 107* Added: New OffsetPolyLines function 108* Update: Minor code refactoring and optimisations 109 110v5.1.5 (5 May 2013) 111* Added: ForceSimple property to Clipper class 112* Update: Improved documentation 113 114v5.1.4 (24 March 2013) 115* Update: CleanPolygon function enhanced. 116* Update: Documentation improved. 117 118v5.1.3 (14 March 2013) 119* Bugfix: Minor bugfixes. 120* Update: Documentation significantly improved. 121 122v5.1.2 (26 February 2013) 123* Bugfix: PolyNode class was missing a constructor. 124* Update: The MiterLimit parameter in the OffsetPolygons 125 function has been renamed Limit and can now also be used to 126 limit the number of vertices used to construct arcs when 127 JoinType is set to jtRound. 128 129v5.1.0 (17 February 2013) 130* Update: ExPolygons has been replaced with the PolyTree & 131 PolyNode classes to more fully represent the parent-child 132 relationships of the polygons returned by Clipper. 133* Added: New CleanPolygon and CleanPolygons functions. 134* Bugfix: Another orientation bug fixed. 135 136v5.0.2 - 30 December 2012 137* Bugfix: Significant fixes in and tidy of the internal 138 Int128 class (which is used only when polygon coordinate 139 values are greater than �0x3FFFFFFF (~1.07e9)). 140* Update: The Area algorithm has been updated and is faster. 141* Update: Documentation updates. The newish but undocumented 142 'CheckInputs' parameter of the OffsetPolygons function has been 143 renamed 'AutoFix' and documented too. The comments on rounding 144 have also been improved (ie clearer and expanded). 145 146v4.10.0 - 25 December 2012 147* Bugfix: Orientation bugs should now be resolved (finally!). 148* Bugfix: Bug in Int128 class 149 150v4.9.8 - 2 December 2012 151* Bugfix: Further fixes to rare Orientation bug. 152 153v4.9.7 - 29 November 2012 154* Bugfix: Bug that very rarely returned the wrong polygon 155 orientation. 156* Bugfix: Obscure bug affecting OffsetPolygons when using 157 jtRound for the JoinType parameter and when polygons also 158 contain very large coordinate values (> +/-100000000000). 159 160v4.9.6 - 9 November 2012 161* Bugfix: Another obscure bug related to joining polygons. 162 163v4.9.4 - 2 November 2012 164* Bugfix: Bugs in Int128 class occasionally causing 165 wrong orientations. 166* Bugfix: Further fixes related to joining polygons. 167 168v4.9.0 - 9 October 2012 169* Bugfix: Obscure bug related to joining polygons. 170 171v4.8.9 - 25 September 2012 172* Bugfix: Obscure bug related to precision of intersections. 173 174v4.8.8 - 30 August 2012 175* Bugfix: Fixed bug in OffsetPolygons function introduced in 176 version 4.8.5. 177 178v4.8.7 - 24 August 2012 179* Bugfix: ReversePolygon function in C++ translation was broken. 180* Bugfix: Two obscure bugs affecting orientation fixed too. 181 182v4.8.6 - 11 August 2012 183* Bugfix: Potential for memory overflow errors when using 184 ExPolygons structure. 185* Bugfix: The polygon coordinate range has been reduced to 186 +/- 0x3FFFFFFFFFFFFFFF (4.6e18). 187* Update: ReversePolygons function was misnamed ReversePoints in C++. 188* Update: SimplifyPolygon function now takes a PolyFillType parameter. 189 190v4.8.5 - 15 July 2012 191* Bugfix: Potential for memory overflow errors in OffsetPolygons(). 192 193v4.8.4 - 1 June 2012 194* Bugfix: Another obscure bug affecting ExPolygons structure. 195 196v4.8.3 - 27 May 2012 197* Bugfix: Obscure bug causing incorrect removal of a vertex. 198 199v4.8.2 - 21 May 2012 200* Bugfix: Obscure bug could cause an exception when using 201 ExPolygon structure. 202 203v4.8.1 - 12 May 2012 204* Update: Cody tidy and minor bug fixes. 205 206v4.8.0 - 30 April 2012 207* Bugfix: Occasional errors in orientation fixed. 208* Update: Added notes on rounding to the documentation. 209 210v4.7.6 - 11 April 2012 211* Fixed a bug in Orientation function (affecting C# translations only). 212* Minor documentation update. 213 214v4.7.5 - 28 March 2012 215* Bugfix: Fixed a recently introduced bug that occasionally caused an 216 unhandled exception in C++ and C# translations. 217 218v4.7.4 - 15 March 2012 219* Bugfix: Another minor bugfix. 220 221v4.7.2 - 4 March 2012 222* Bugfix: Fixed bug introduced in ver 4.7 which sometimes caused 223 an exception if ExPolygon structure was passed to Clipper's 224 Execute method. 225 226v4.7.1 - 3 March 2012 227* Bugfix: Rare crash when JoinCommonEdges joined polygons that 228 'cancelled' each other. 229* Bugfix: Clipper's internal Orientation method occasionally 230 returned wrong result. 231* Update: Improved C# code (thanks to numerous excellent suggestions 232 from David Piepgrass) 233 234v4.7 - 10 February 2012 235* Improved the joining of output polygons sharing a common edge. 236 237v4.6.6 - 3 February 2012 238* Bugfix: Another obscure bug occasionally causing incorrect 239 polygon orientation. 240 241v4.6.5 - 17 January 2012 242* Bugfix: Obscure bug occasionally causing incorrect hole 243 assignment in ExPolygon structure. 244 245v4.6.4 - 8 November 2011 246* Added: SimplifyPolygon and SimplifyPolygons functions. 247 248v4.6.3 - 11 November 2011 249* Bugfix: Fixed another minor mitering bug in OffsetPolygons. 250 251v4.6.2 - 10 November 2011 252* Bugfix: Fixed a rare bug in the orientation of polygons 253 returned by Clipper's Execute() method. 254* Bugfix: Previous update introduced a mitering bug in the 255 OffsetPolygons function. 256 257v4.6 - 29 October 2011 258* Added: Support for Positive and Negative polygon fill 259 types (in addition to the EvenOdd and NonZero fill types). 260* Bugfix: The OffsetPolygons function was generating the 261 occasional artefact when 'shrinking' polygons. 262 263v4.5.5 - 8 October 2011 264* Bugfix: Fixed an obscure bug in Clipper's JoinCommonEdges 265 method. 266* Update: Replaced IsClockwise function with Orientation 267 function. The orientation issues affecting OffsetPolygons 268 should now be finally resolved. 269* Change: The Area function once again returns a signed value. 270 271v4.5.1 - 28 September 2011 272* Deleted: The UseFullCoordinateRange property has been 273 deleted since integer range is now managed implicitly. 274* BugFix: Minor bug in OffsetPolygon mitering. 275* Change: C# JoinType enum moved from Clipper class to 276 ClipperLib namespace. 277* Change: The Area function now returns the absolute area 278 (irrespective of orientation). 279* Change: The IsClockwise function now requires a second 280 parameter - YAxisPositiveUpward - to accommodate displays 281 with Y-axis oriented in either direction 282 283v4.4.4 - 10 September 2011 284* Change: Deleted jtButt from JoinType (used by the 285 OffsetPolygons function). 286* BugFix: Fixed another minor bug in OffsetPolygons function. 287* Update: Further improvements to the help file 288 289v4.4.3 - 29 August 2011 290* BugFix: fixed a minor rounding issue in OffsetPolygons 291 function (affected C++ & C# translations). 292* BugFix: fixed a minor bug in OffsetPolygons' function 293 declaration (affected C++ translation only). 294* Change: 'clipper' namespace changed to 'ClipperLib' 295 namespace in both C++ and C# code to remove the ambiguity 296 between the Clipper class and the namespace. (This also 297 required numerous updates to the accompanying demos.) 298 299v4.4.2 - 26 August 2011 300* BugFix: minor bugfixes in Clipper. 301* Update: the OffsetPolygons function has been significantly 302 improved by offering 4 different join styles. 303 304v4.4.0 - 6 August 2011 305* BugFix: A number of minor bugs have been fixed that mostly 306 affected the new ExPolygons structure. 307 308v4.3.0 - 17 June 2011 309* New: ExPolygons structure that explicitly associates 'hole' 310 polygons with their 'outer' container polygons. 311* New: Execute method overloaded so the solution parameter 312 can now be either Polygons or ExPolygons. 313* BugFix: Fixed a rare bug in solution polygons orientation. 314 315v4.2.8 - 21 May 2011 316* Update: JoinCommonEdges() improved once more. 317* BugFix: Several minor bugs fixed. 318 319v4.2.6 - 1 May 2011 320* Bugfix: minor bug in SlopesEqual function. 321* Update: Merging of output polygons sharing common edges 322 has been significantly inproved 323 324v4.2.4 - 26 April 2011 325 Input polygon coordinates can now contain the full range of 326 signed 64bit integers (ie +/-9,223,372,036,854,775,807). This 327 means that floating point values can be converted to and from 328 Clipper's 64bit integer coordinates structure (IntPoint) and 329 still retain a precision of up to 18 decimal places. However, 330 since the large-integer math that supports this expanded range 331 imposes a small cost on performance (~15%), a new property 332 UseFullCoordinateRange has been added to the Clipper class to 333 allow users the choice of whether or not to use this expanded 334 coordinate range. If this property is disabled, coordinate values 335 are restricted to +/-1,500,000,000. 336 337v4.2 - 12 April 2011 338 JoinCommonEdges() code significantly improved plus other minor 339 improvements. 340 341v4.1.2 - 9 April 2011 342* Update: Minor code tidy. 343* Bugfix: Possible endless loop in JoinCommonEdges() in clipper.pas. 344 345v4.1.1 - 8 April 2011 346* Update: All polygon coordinates are now stored as 64bit integers 347 (though they're still restricted to range -1.5e9 to +1.5e9 pending 348 the inclusion of code supporting 64bit math). 349* Change: AddPolygon and AddPolygons methods now return boolean 350 values. 351* Bugfix: Bug in JoinCommonEdges() caused potential endless loop. 352* Bugfix: Bug in IsClockwise(). (C++ code only) 353 354v4.0 - 5 April 2011 355* Clipper 4 is a major rewrite of earlier versions. The biggest 356 change is that floating point values are no longer used, 357 except for the storing of edge slope values. The main benefit 358 of this is the issue of numerical robustness has been 359 addressed. Due to other major code improvements Clipper v4 360 is approximately 40% faster than Clipper v3. 361* The AddPolyPolygon method has been renamed to AddPolygons. 362* The IgnoreOrientation property has been removed. 363* The clipper_misc library has been merged back into the 364 main clipper library. 365 366v3.1.0 - 17 February 2011 367* Bugfix: Obscure bug in TClipperBase.SetDx method that caused 368 problems with very small edges ( edges <1/1000th pixel in size). 369 370v3.0.3 - 9 February 2011 371* Bugfix: Significant bug, but only in C# code. 372* Update: Minor refactoring. 373 374v3.0 - 31 January 2011 375* Update: Major rewrite of the portion of code that calculates 376 the output polygons' orientation. 377* Update: Help file significantly improved. 378* Change: Renamed ForceOrientation property to IgnoreOrientation. 379 If the orientation of output polygons is not important, or can 380 be managed separately, clipping routines can be sped up by about 381 60% by setting IgnoreOrientation to true. Defaults to false. 382* Change: The OffsetPolygon and Area functions have been moved to 383 the new unit - clipper_misc. 384 3852.99 - 15 January 2011 386* Bugfix: Obscure bug in AddPolygon method could cause an endless loop. 387 3882.8 - 20 November 2010 389* Updated: Output polygons which previously shared a common 390 edge are now merged. 391* Changed: The orientation of outer polygons is now clockwise 392 when the display's Y axis is positive downwards (as is 393 typical for most Windows applications). Inner polygons 394 (holes) have the opposite orientation. 395* Added: Support module for Cairo Graphics Library (with demo). 396* Updated: C# and C++ demos. 397 3982.522 - 15 October 2010 399* Added C# translation (thanks to Olivier Lejeune) and 400 a link to Ruby bindings (thanks to Mike Owens). 401 4022.0 - 30 July 2010 403* Clipper now clips using both the Even-Odd (alternate) and 404 Non-Zero (winding) polygon filling rules. (Previously Clipper 405 assumed the Even-Odd rule for polygon filling.) 406 4071.4c - 16 June 2010 408* Added C++ support for AGG graphics library 409 4101.2s - 2 June 2010 411* Added C++ translation of clipper.pas 412 4131.0 - 9 May 2010