• Stars
    star
    105
  • Rank 328,196 (Top 7 %)
  • Language Pascal
  • License
    Boost Software Li...
  • Created over 7 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Polygon and line clipping and offsetting library (C++, C#, Delphi) by Angus Johnson. Forked from https://sourceforge.net/projects/polyclipping. I prepared a "Release" branch (containing C# source only) for submodule usage.
=====================================================================
Clipper Change Log
=====================================================================
v6.4.2 (27 February 2017) Rev 512
* Several minor bugfixes: #152 #160 #161 #162 

v6.4 (2 July 2015) Rev 495
* Numerous generally minor bugfixes 

v6.2.1 (31 October 2014) Rev 482
* Bugfix in ClipperOffset.Execute where the Polytree.IsHole property 
  was returning incorrect values with negative offsets
* Very minor improvement to join rounding in ClipperOffset
* Fixed CPP OpenGL demo.

v6.2.0 (17 October 2014) Rev 477
* Numerous minor bugfixes, too many to list. 
  (See revisions 454-475 in Sourceforge Repository)
* The ZFillFunction (custom callback function) has had its parameters 
  changed. 
* Curves demo removed (temporarily).
* Deprecated functions have been removed. 

v6.1.5 (26 February 2014) Rev 460
* Improved the joining of output polygons sharing a common edge 
  when those common edges are horizontal.
* Fixed a bug in ClipperOffset.AddPath() which would produce
  incorrect solutions when open paths were added before closed paths.
* Minor code tidy and performance improvement

v6.1.4 (6 February 2014)
* Fixed bugs in MinkowskiSum
* Fixed minor bug when using Clipper.ForceSimplify.
* Modified use_xyz callback so that all 4 vertices around an
  intersection point are now passed to the callback function.

v6.1.3a (22 January 2014) Rev 453
* Fixed buggy PointInPolygon function (C++ and C# only). 
  Note this bug only affected the newly exported function, the 
  internal PointInPolygon function used by Clipper was OK.
 
v6.1.3 (19 January 2014) Rev 452
* Fixed potential endless loop condition when adding open 
  paths to Clipper.
* Fixed missing implementation of SimplifyPolygon function 
  in C++ code.
* Fixed incorrect upper range constant for polygon coordinates 
  in Delphi code.
* Added PointInPolygon function. 
* Overloaded MinkowskiSum function to accommodate multi-contour 
  paths.  

v6.1.2 (15 December 2013) Rev 444
* Fixed broken C++ header file.
* Minor improvement to joining polygons.

v6.1.1 (13 December 2013) Rev 441
* Fixed a couple of bugs affecting open paths that could 
  raise unhandled exceptions.
  
v6.1.0 (12 December 2013)
* Deleted: Previously deprecated code has been removed. 
* Modified: The OffsetPaths function is now deprecated as it has 
  been replaced by the ClipperOffset class which is much more 
  flexible. 
* Bugfixes: Several minor bugs have been fixed including 
  occasionally an incorrect nesting within the PolyTree structure.

v6.0.0 (30 October 2013)
* Added: Open path (polyline) clipping. A new 'Curves' demo 
  application showcases this (see the 'Curves' directory). 
* Update: Major improvement in the merging of 
  shared/collinear edges in clip solutions (see Execute). 
* Added: The IntPoint structure now has an optional 'Z' member. 
  (See the precompiler directive use_xyz.) 
* Added: Users can now force Clipper to use 32bit integers 
  (via the precompiler directive use_int32) instead of using 
  64bit integers.
* Modified: To accommodate open paths, the Polygon and Polygons 
  structures have been renamed Path and Paths respectively. The 
  AddPolygon and AddPolygons methods of the ClipperBase class 
  have been renamed AddPath and AddPaths respectively. Several 
  other functions have been similarly renamed. 
* Modified: The PolyNode Class has a new IsOpen property. 
* Modified: The Clipper class has a new ZFillFunction property. 
* Added: MinkowskiSum and MinkowskiDiff functions added. 
* Added: Several other new functions have been added including 
  PolyTreeToPaths, OpenPathsFromPolyTree and ClosedPathsFromPolyTree. 
* Added: The Clipper constructor now accepts an optional InitOptions 
  parameter to simplify setting properties. 
* Bugfixes: Numerous minor bugs have been fixed. 
* Deprecated: Version 6 is a major upgrade from previous versions 
  and quite a number of changes have been made to exposed structures 
  and functions. 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 use_deprecated has been defined.

v5.1.6 (23 May 2013)
* BugFix: CleanPolygon function was buggy.
* Changed: 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.) 
* Added: New OffsetPolyLines function
* Update: Minor code refactoring and optimisations

v5.1.5 (5 May 2013)
* Added: ForceSimple property to Clipper class
* Update: Improved documentation  

v5.1.4 (24 March 2013)
* Update: CleanPolygon function enhanced.
* Update: Documentation improved.  

v5.1.3 (14 March 2013)
* Bugfix: Minor bugfixes.
* Update: Documentation significantly improved.  

v5.1.2 (26 February 2013)
* Bugfix: PolyNode class was missing a constructor. 
* Update: The MiterLimit parameter in the OffsetPolygons 
  function has been renamed Limit and can now also be used to 
  limit the number of vertices used to construct arcs when 
  JoinType is set to jtRound.

v5.1.0 (17 February 2013)
* Update: ExPolygons has been replaced with the PolyTree & 
  PolyNode classes to more fully represent the parent-child 
  relationships of the polygons returned by Clipper. 
* Added: New CleanPolygon and CleanPolygons functions. 
* Bugfix: Another orientation bug fixed.

v5.0.2 - 30 December 2012
* Bugfix: Significant fixes in and tidy of the internal 
  Int128 class (which is used only when polygon coordinate 
  values are greater than ±0x3FFFFFFF (~1.07e9)). 
* Update: The Area algorithm has been updated and is faster. 
* Update: Documentation updates. The newish but undocumented 
  'CheckInputs' parameter of the OffsetPolygons function has been 
  renamed 'AutoFix' and documented too. The comments on rounding 
  have also been improved (ie clearer and expanded).

v4.10.0 - 25 December 2012
* Bugfix: Orientation bugs should now be resolved (finally!).
* Bugfix: Bug in Int128 class

v4.9.8 - 2 December 2012
* Bugfix: Further fixes to rare Orientation bug.

v4.9.7 - 29 November 2012
* Bugfix: Bug that very rarely returned the wrong polygon 
  orientation.
* Bugfix: Obscure bug affecting OffsetPolygons when using 
  jtRound for the JoinType parameter and when polygons also
  contain very large coordinate values (> +/-100000000000).

v4.9.6 - 9 November 2012
* Bugfix: Another obscure bug related to joining polygons.

v4.9.4 - 2 November 2012
* Bugfix: Bugs in Int128 class occasionally causing 
  wrong orientations.
* Bugfix: Further fixes related to joining polygons.

v4.9.0 - 9 October 2012
* Bugfix: Obscure bug related to joining polygons.

v4.8.9 - 25 September 2012
* Bugfix: Obscure bug related to precision of intersections.
          
v4.8.8 - 30 August 2012
* Bugfix: Fixed bug in OffsetPolygons function introduced in 
  version 4.8.5.

v4.8.7 - 24 August 2012
* Bugfix: ReversePolygon function in C++ translation was broken.
* Bugfix: Two obscure bugs affecting orientation fixed too.

v4.8.6 - 11 August 2012
* Bugfix: Potential for memory overflow errors when using 
  ExPolygons structure.
* Bugfix: The polygon coordinate range has been reduced to 
  +/- 0x3FFFFFFFFFFFFFFF (4.6e18).
* Update: ReversePolygons function was misnamed ReversePoints in C++.
* Update: SimplifyPolygon function now takes a PolyFillType parameter.
          
v4.8.5 - 15 July 2012
* Bugfix: Potential for memory overflow errors in OffsetPolygons().

v4.8.4 - 1 June 2012
* Bugfix: Another obscure bug affecting ExPolygons structure.

v4.8.3 - 27 May 2012
* Bugfix: Obscure bug causing incorrect removal of a vertex.

v4.8.2 - 21 May 2012
* Bugfix: Obscure bug could cause an exception when using 
  ExPolygon structure.

v4.8.1 - 12 May 2012
* Update: Cody tidy and minor bug fixes.

v4.8.0 - 30 April 2012
* Bugfix: Occasional errors in orientation fixed. 
* Update: Added notes on rounding to the documentation. 

v4.7.6 - 11 April 2012
* Fixed a bug in Orientation function (affecting C# translations only).
* Minor documentation update.

v4.7.5 - 28 March 2012
* Bugfix: Fixed a recently introduced bug that occasionally caused an 
  unhandled exception in C++ and C# translations. 

v4.7.4 - 15 March 2012
* Bugfix: Another minor bugfix.

v4.7.2 - 4 March 2012
* Bugfix: Fixed bug introduced in ver 4.7 which sometimes caused 
  an exception if ExPolygon structure was passed to Clipper's 
  Execute method. 

v4.7.1 - 3 March 2012
* Bugfix: Rare crash when JoinCommonEdges joined polygons that 
  'cancelled' each other. 
* Bugfix: Clipper's internal Orientation method occasionally 
  returned wrong result. 
* Update: Improved C# code (thanks to numerous excellent suggestions 
  from David Piepgrass) 

v4.7 - 10 February 2012
* Improved the joining of output polygons sharing a common edge.

v4.6.6 - 3 February 2012
* Bugfix: Another obscure bug occasionally causing incorrect 
  polygon orientation. 

v4.6.5 - 17 January 2012
* Bugfix: Obscure bug occasionally causing incorrect hole 
  assignment in ExPolygon structure. 

v4.6.4 - 8 November 2011
* Added: SimplifyPolygon and SimplifyPolygons functions.

v4.6.3 - 11 November 2011
* Bugfix: Fixed another minor mitering bug in OffsetPolygons.

v4.6.2 - 10 November 2011
* Bugfix: Fixed a rare bug in the orientation of polygons 
  returned by Clipper's Execute() method.
* Bugfix: Previous update introduced a mitering bug in the
  OffsetPolygons function.

v4.6 - 29 October 2011
* Added: Support for Positive and Negative polygon fill 
  types (in addition to the EvenOdd and NonZero fill types).
* Bugfix: The OffsetPolygons function was generating the 
  occasional artefact when 'shrinking' polygons.

v4.5.5 - 8 October 2011
* Bugfix: Fixed an obscure bug in Clipper's JoinCommonEdges 
  method. 
* Update: Replaced IsClockwise function with Orientation 
  function. The orientation issues affecting OffsetPolygons 
  should now be finally resolved.
* Change: The Area function once again returns a signed value.
 
v4.5.1 - 28 September 2011
* Deleted: The UseFullCoordinateRange property has been 
  deleted since integer range is now managed implicitly. 
* BugFix: Minor bug in OffsetPolygon mitering. 
* Change: C# JoinType enum moved from Clipper class to 
  ClipperLib namespace. 
* Change: The Area function now returns the absolute area 
  (irrespective of orientation). 
* Change: The IsClockwise function now requires a second 
  parameter - YAxisPositiveUpward - to accommodate displays 
  with Y-axis oriented in either direction

v4.4.4 - 10 September 2011
* Change: Deleted jtButt from JoinType (used by the 
  OffsetPolygons function). 
* BugFix: Fixed another minor bug in OffsetPolygons function. 
* Update: Further improvements to the help file

v4.4.3 - 29 August 2011
* BugFix: fixed a minor rounding issue in OffsetPolygons 
  function (affected C++ & C# translations). 
* BugFix: fixed a minor bug in OffsetPolygons' function 
  declaration (affected C++ translation only). 
* Change: 'clipper' namespace changed to 'ClipperLib' 
  namespace in both C++ and C# code to remove the ambiguity 
  between the Clipper class and the namespace. (This also 
  required numerous updates to the accompanying demos.)

v4.4.2 - 26 August 2011
* BugFix: minor bugfixes in Clipper. 
* Update: the OffsetPolygons function has been significantly 
  improved by offering 4 different join styles. 

v4.4.0 - 6 August 2011
* BugFix: A number of minor bugs have been fixed that mostly 
  affected the new ExPolygons structure. 

v4.3.0 - 17 June 2011
* New: ExPolygons structure that explicitly associates 'hole' 
  polygons with their 'outer' container polygons.
* New: Execute method overloaded so the solution parameter 
  can now be either Polygons or ExPolygons.  
* BugFix: Fixed a rare bug in solution polygons orientation. 

v4.2.8 - 21 May 2011
* Update: JoinCommonEdges() improved once more. 
* BugFix: Several minor bugs fixed. 

v4.2.6 - 1 May 2011
* Bugfix: minor bug in SlopesEqual function.
* Update: Merging of output polygons sharing common edges 
  has been significantly inproved

v4.2.4 - 26 April 2011
  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 integer coordinates structure (IntPoint) 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.

v4.2 - 12 April 2011
  JoinCommonEdges() code significantly improved plus other minor 
  improvements.

v4.1.2 - 9 April 2011
* Update: Minor code tidy. 
* Bugfix: Possible endless loop in JoinCommonEdges() in clipper.pas.

v4.1.1 - 8 April 2011
* Update: All polygon coordinates are now stored as 64bit integers
  (though they're still restricted to range -1.5e9 to +1.5e9 pending 
  the inclusion of code supporting 64bit math).
* Change: AddPolygon and AddPolygons methods now return boolean 
  values. 
* Bugfix: Bug in JoinCommonEdges() caused potential endless loop. 
* Bugfix: Bug in IsClockwise(). (C++ code only)

v4.0 - 5 April 2011
* Clipper 4 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. 
* The AddPolyPolygon method has been renamed to AddPolygons. 
* The IgnoreOrientation property has been removed. 
* The clipper_misc library has been merged back into the 
  main clipper library.
  
v3.1.0 - 17 February 2011
* Bugfix: Obscure bug in TClipperBase.SetDx method that caused 
  problems with very small edges ( edges <1/1000th pixel in size).
  
v3.0.3 - 9 February 2011
* Bugfix: Significant bug, but only in C# code.
* Update: Minor refactoring.

v3.0 - 31 January 2011
* Update: Major rewrite of the portion of code that calculates 
  the output polygons' orientation.
* Update: Help file significantly improved.
* Change: Renamed ForceOrientation property to IgnoreOrientation. 
  If the orientation of output polygons is not important, or can 
  be managed separately, clipping routines can be sped up by about 
  60% by setting IgnoreOrientation to true. Defaults to false.
* Change: The OffsetPolygon and Area functions have been moved to 
  the new unit - clipper_misc. 

2.99 - 15 January 2011
* Bugfix: Obscure bug in AddPolygon method could cause an endless loop. 

2.8 - 20 November 2010
* Updated: Output polygons which previously shared a common 
  edge are now merged. 
* Changed: The orientation of outer polygons is now clockwise 
  when the display's Y axis is positive downwards (as is 
  typical for most Windows applications). Inner polygons 
  (holes) have the opposite orientation.
* Added: Support module for Cairo Graphics Library (with demo). 
* Updated: C# and C++ demos.

2.522 - 15 October 2010
* Added C# translation (thanks to Olivier Lejeune) and 
  a link to Ruby bindings (thanks to Mike Owens).

2.0 - 30 July 2010
* Clipper now clips using both the Even-Odd (alternate) and 
  Non-Zero (winding) polygon filling rules. (Previously Clipper 
  assumed the Even-Odd rule for polygon filling.)
  
1.4c - 16 June 2010
* Added C++ support for AGG graphics library 
  
1.2s - 2 June 2010
* Added C++ translation of clipper.pas

1.0 - 9 May 2010

More Repositories

1

Unity.Library.eppz.Geometry

2D Geometry for Unity. Suited for everyday polygon hassle. Polygon clipping, polygon winding direction, polygon area, polygon centroid, centroid of multiple polygons, line intersection, point-line distance, segment intersection, polygon-point containment, polygon triangulation, polygon Voronoi diagram, polygon offset, polygon outline, polygon buffer, polygon union, polygon substraction, polygon boolean operations, and more. It is a polygon fest.
C#
321
star
2

iOS.Blog.SwiftUI_Search_Bar_in_Navigation_Bar

🔍 SwiftUI (1) search bar in the navigation bar.
Swift
174
star
3

Unity.Library.eppz.Lines

Lightweight OpenGL line rendering for Unity. Like Debug.DrawLine in Game view.
C#
127
star
4

Unity.Library.eppz

Unity everydayers.
C#
95
star
5

Unity.Blog.Unity_Android_plugin_tutorial

Unity native plugin (iOS / Android) example / boilerplate project.
C#
80
star
6

VSCode.Extension.eppz_Code

C# Visual Studio Code theme for Unity! Carefully designed colors with meanings.
C#
74
star
7

iOS.Blog.UILabel_Typography_Extensions

Set UILabel line height, letter spacing (and more). 📐
Swift
65
star
8

iOS.Library.eppz_kit

The collection of the usefuls. Objective-C everydayers.
Objective-C
49
star
9

iOS.Library.eppz_Xcode

An Xcode color scheme with meanings behind colors.
45
star
10

.NET.Library.TuyaKit

A library to control Tuya smart home devices via local TCP connection.
C#
44
star
11

iOS.Blog.SwiftUI_Pull_to_Refresh

✳️ SwiftUI Pull to Refresh (for iOS 13 and iOS 14) condensed into a single modifier.
Swift
35
star
12

iOS.Package.Refreshable

✳️ SwiftUI Pull to Refresh (for iOS 13 and iOS 14) package.
Swift
34
star
13

Unity.Labs.Unity_Player_Android

Decompiled Java sources of **Unity Player for Android** at the time of Unity 5.3.2.
Java
33
star
14

Unity.Blog.Override_App_Delegate

A maintainable way to extend / override app delegate in Unity iOS / OSX standalone player. (Much) more at http://eppz.eu/blog/override-app-delegate-unity-ios-osx-1/
Objective-C
31
star
15

iOS.Blog.UIView_from_Xib

Sample code for the article 5 approach to load UIView from Xib at eppz.eu/blog
Objective-C
30
star
16

iOS.Library.View_instantiator

Simplest way to load UIView from Xib.
Objective-C
27
star
17

iOS.Package.Withable

📐 Declarative UIKit in 10 lines of code.
Swift
27
star
18

iOS.Blog.Declarative_UIKit

A simple generic extension that can make building UI with UIKit more declarative.
Swift
25
star
19

Unity.Library.eppz.Cloud

 iCloud Key-value store native iOS plugin for Unity. With callbacks on changes per value.
C#
21
star
20

Unity.Blog.My_Plugin

Unity native plugin (iOS / Android) Hello World! example project.
Objective-C
18
star
21

Unity.Library.eppz_easing

Easing algorithms with explanations / testbed.
C#
18
star
22

iOS.Library.eppz_reachability

A block-based extraction of Apple's Reachability sample.
Objective-C
16
star
23

Unity.Library.eppz.Utils

Small Unity helpers for the everyday.
C#
14
star
24

iOS.Package.KeyboardLayoutGuide

⌨️ Backported keyboardLayoutGuide for iOS 13 and 14.
Swift
14
star
25

iOS.Blog.Custom_UITableViewCell_from_Xib

Custom UITableViewCell from Xib with ease.
Objective-C
10
star
26

Deprecated.Unity.Library.eppz

Unity everydayers, 2D geometry and more.
C#
10
star
27

Dot_Grid_A4

A blank dot grid PDF sheet (A4, 5mm).
7
star
28

Unity.Library.eppz.Rate

App Store rate mechanisms native iOS plugin for Unity.
C#
7
star
29

iOS.Library.eppz_swizzler

Basic swizzling wrapped up into an Objective-C interface.
Objective-C
7
star
30

iOS.Prototype.Neumorphism

An experiment to create photorealistic dynamic neumorph SwiftUI components rendered with SceneKit.
Swift
6
star
31

iOS.Blog.SpriteKit_drag

5 approach to implement SpriteKit drag (more at blog.eppz.eu)
Objective-C
6
star
32

macOS.Prototype.Ranger

Powerful PokerStars macOS HUD integrating both PokerTracker and SharkScope statistics.
Swift
5
star
33

Unity.Library.eppz.Meshes

Procedural runtime ring and circle mesh creator classes for Unity.
C#
5
star
34

JS.Labs.transform

CSS3 3D transformations playground.
JavaScript
5
star
35

Unity.Test.eppz

Unity Test project for https://github.com/eppz/Unity.Library.eppz to run Editor Tests on Travis CI.
Python
5
star
36

Unity.Library.eppz.DeepLink

 Deep linking native iOS plugin for Unity. With deep link callbacks on app launch as well.
Objective-C
5
star
37

iOS.Blog.Codable

Codable Property Wrappers for the everyday.
Swift
4
star
38

iOS.Library.eppz_alert

Simplest UIAlertView wrapper ever.
Objective-C
4
star
39

iOS.Library.eppz_coreData

A simple drop-in Core Data sample class, actually a wrapper that manages a queue of any kind of objects without hassling with the Core Data boilerplate code.
Objective-C
4
star
40

Unity.Library.eppz.Extensions

String extensions for the everyday.
C#
4
star
41

Unity.Library.eppz.Persistence

📦 Object serialization (Binary, JSON, Gzip) wrapped up for the everyday.
C#
4
star
42

Unity.Labs.OSX_Unity_Player_Headers

Dumped class headers from OSX Unity Player executable.
Objective-C
4
star
43

iOS.Library.eppz_settings

Drop-in NSUserDefaults settings manager for everyday use.
Objective-C
4
star
44

iOS.Blog.Understanding_SwiftUI_DSL

Recreating a SwiftUI hierarchy in "vanilla" Swift. Dissecting SwiftUI DSL step by step.
Swift
4
star
45

iOS.Library.eppz_model

A model layer for the everydays. Extreme simplicity (while fully customizable).
Objective-C
3
star
46

Unity.Library.eppz.Easing

Single file extract of the standalone project https://github.com/eppz/Unity.Library.eppz_easing.
C#
3
star
47

Unity.Blog.Understanding_IEnumerator

Sample code for http://eppz.eu/blog/understanding-ienumerator-in-unity-3d/
C#
3
star
48

macOS.Production.eppz_hide

A tiny little menulet app with the sole purpose of toggle showing hidden files.
Objective-C
2
star
49

Unity.UI

Mirror of official Unity UI system.
C#
2
star
50

macOS.Production.PDF_Links

Tiny tool help creating PDF links in Adobe Illustrator.
Swift
2
star
51

iOS.Prototype.Squishy

Squishy UI prototype.
Swift
2
star
52

iOS.Blog.Keyboard_Avoidance

⌨️ Keyboard avoidance with a single line of code. Animate to text fields, swipe down keyboard dismissal for free.
Swift
2
star
53

iOS.Labs.Interactive_transitions

A dead simple wrapper around UIViewController transitions (also gesture driven interactivity).
Objective-C
2
star
54

SPICE

🌐 NASA's SPICE Toolkits for C.
C
2
star
55

JS.Library.eppz_js

Objective-Javascript. Classes, instance methods, class methods, inheritance, superclass implementation calls (with correct this referencing) and more.
JavaScript
2
star
56

iOS.Labs.physicsBody

SKPhysicsBody containment (covering) test category. Dead simple interface, runtimee implementation.
Objective-C
1
star
57

Unity.Library.eppz.Networking

Unity networking for the everyday.
C#
1
star
58

JS.Labs.filters

HTML5 <canvas> draft for visualizing signal filtering methods.
JavaScript
1
star