Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upstream 6.3.2 updates #8

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
725 changes: 725 additions & 0 deletions Diagrams.xml

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
[![Build Status](https://travis-ci.org/kynosarges/tektosyne.svg?branch=master)](https://travis-ci.org/kynosarges/tektosyne)
[![codecov](https://codecov.io/gh/kynosarges/tektosyne/branch/master/graph/badge.svg)](https://codecov.io/gh/kynosarges/tektosyne)
[![license](https://img.shields.io/github/license/mashape/apistatus.svg)](https://raw.githubusercontent.com/kynosarges/tektosyne/master/LICENSE.txt)
[![Maven Central artifact](https://img.shields.io/badge/mavenCentral-6.2.0-blue.svg?label=maven-central)](http://search.maven.org/#artifactdetails%7Corg.kynosarges%7Ctektosyne%7C6.2.0%7Cjar)
[![JCenter artifact](https://img.shields.io/badge/mavenCentral-6.2.0-blue.svg?label=JCenter)](https://bintray.com/pixelbumper/maven/Tektosyne/_latestVersion)
[![Maven Central artifact](https://img.shields.io/badge/mavenCentral-6.3.0-blue.svg?label=maven-central)](http://search.maven.org/#artifactdetails%7Corg.kynosarges%7Ctektosyne%7C6.2.0%7Cjar)
[![JCenter artifact](https://img.shields.io/badge/mavenCentral-6.3.0-blue.svg?label=JCenter)](https://bintray.com/pixelbumper/maven/Tektosyne/_latestVersion)


# Tektosyne
Expand Down Expand Up @@ -55,7 +55,7 @@ Tektosyne is available via mavenCentral and JCenter:
### Gradle
```
dependencies {
compile group: 'org.kynosarges', name: 'tektosyne', version: '6.2.0'
compile group: 'org.kynosarges', name: 'tektosyne', version: '6.3.0'
}
```

Expand All @@ -65,14 +65,14 @@ dependencies {
<dependency>
<groupId>org.kynosarges</groupId>
<artifactId>tektosyne</artifactId>
<version>6.2.0</version>
<version>6.3.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
```

## License
Tektosyne is © 2002–2018 by [Christoph Nahr](http://kynosarges.org/index.html) but available for free under the MIT license.
Tektosyne is © 2002–2019 by [Christoph Nahr](http://kynosarges.org/index.html) but available for free under the MIT license.

## About this Repository
The maintainer of the repository is not the original author of tektosyne, but liked the library so much that he decided to upload it to GitHub and distribute it via mavenCentral and jcenter.
Expand Down
147 changes: 147 additions & 0 deletions ReadMe.html

Large diffs are not rendered by default.

139 changes: 139 additions & 0 deletions WhatsNew.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>WhatsNew for Tektosyne 6.3.2</title>
<link rel="stylesheet" type="text/css" href="project.css">
</head>
<body>
<h1>WhatsNew for Tektosyne 6.3.2</h1>
<p>This file contains the version history for the Tektosyne Library, starting with the initial release for Java. Please refer to the <a href="ReadMe.html">ReadMe</a> file for general information. Entries link to weblog posts with further details where available.</p>
<h3>Version 6.3.2 (released 2021-07-18)</h3>
<p>Another bugfix release. Thanks again to Jeff Lockhart! See <a href="https://news.kynosarges.org/2021/07/18/tektosyne-6-3-2-released/">announcement</a> for more information.</p>
<ul>
<li>MultiLineIntersection.Status.handle: Fixed rare search structure corruption when sweep line indices converging at intersection points were ordered inversely to their slope ordering.</li>
<li>MultiLineIntersectionTest: Added method testSearch with sample polygon provided by Jeff Lockhart to test for this search structure corruption.</li>
</ul>
<h3>Version 6.3.1 (released 2021-07-10)</h3>
<p>Small bugfix release. Thanks to Jeff Lockhart for reporting this bug! See <a href="https://news.kynosarges.org/2021/07/10/tektosyne-6-3-1-released/">announcement</a> for more information.</p>
<ul>
<li>Updated build environment to IntelliJ IDEA 2021.1.3. This changes the path to the JUnit library.</li>
<li>MultiLineIntersection.split: Fixed assertion on line 264 that would misfire for lines intersecting only at start and end points, i.e. <code>points.size() == 2</code>.</li>
<li>MultiLineIntersectionTest.findBoth: Added call to <code>split</code> which had not previously been covered by unit tests, only by the interactive test in Tektosyne.Demo.</li>
</ul>
<h3>Version 6.3.0 (released 2019-04-10)</h3>
<p>Complete rewrite of Tektosyne Demo in Java Swing to avoid dependency on stand-alone JavaFX distribution as of Java SE 11. No functional library changes. See <a href="https://news.kynosarges.org/2019/04/10/tektosyne-6-3-for-swing-released/">announcement</a> for more information.</p>
<ul>
<li>Updated to Java SE 10.0.2. The precompiled library JAR still targets Java SE 8.</li>
<li>LineD/I, LineIntersection, MultiLinePoint, PointD/I, RectD/I, RectLocation, SizeD/I, SubdivisionEdge/Element/Face, VoronoiEdge: Removed redundant null checks from <code>equals</code> methods.</li>
<li>PointD.fromDoubles/toDoubles: Removed Javadoc references to JavaFX API documentation.</li>
<li>QuadTree.remove(key, value): Removed erroneous <code>unchecked</code> suppression.</li>
</ul>
<h4>Tektosyne Demo</h4>
<ul>
<li>Changed required GUI framework from JavaFX to Java Swing.</li>
<li>Lowered minimum requirement to Java SE 8, same as for the library, but note that Swing only supports high DPI scaling on Java SE 9 and later.</li>
<li>Added minimum size constraints to all dialogs (with some flickering, see ReadMe).</li>
<li>Planar Subdivision Test: Fixed duplicate shortcut keys.</li>
<li>Regular Polygon Test: Automatically resize polygon with dialog window.</li>
</ul>
<h4>Tektosyne User’s Guide</h4>
<ul>
<li>Updated to reflect new Swing implementation of demo application.</li>
<li>Added source code changes in previous releases: new methods in <code>GeoUtils</code>, default methods in <code>SubdivisionMap</code>, and new interface <code>SubdivisionFullMap</code>.</li>
<li>Most UML diagrams were also revised to account for taller element boxes, caused by improved leading in the current Class Diagrammer release.</li>
</ul>
<h3>Version 6.2.0 (released 2018-03-25)</h3>
<p>See <a href="https://news.kynosarges.org/2018/03/25/tektosyne-6-2-0-released/">Tektosyne 6.2.0 Released</a> for more information.</p>
<ul>
<li>GeoUtils &amp; MathUtils: Updated Javadoc for use of ThreadLocalRandom since 6.1.0.</li>
<li>GeoUtils:
<ul>
<li>randomPoint: Added overload that takes a bounding RectD.</li>
<li>Added method randomRect with a given bounding RectD.</li>
</ul>
</li>
</ul>
<h4>Planar Subdivisions</h4>
<ul>
<li>Subdivision.intersection:
<ul>
<li>Fixed output faces incorrectly mapping to the unbounded face of an input Subdivision. This happened when all incident edges of an output face were from the other input Subdivision.</li>
<li>SplitEdgeResult.updateFaces: Fixed face mapping not being updated for twins of current edges.</li>
<li>Added extensive unit tests, both random and non-random.</li>
</ul>
</li>
<li>SubdivisionMap:
<ul>
<li>from/toFace: Added default implementations that throw UnsupportedOperationException.</li>
<li>Added interface SubdivisionFullMap that extends SubdivisionMap to support edges and vertices. The additional conversion methods also throw UnsupportedOperationException by default, allowing selective implementation by clients.</li>
</ul>
</li>
<li>SubdivisionLinesTest: Added more factory methods to create subdivisions.</li>
<li>SubdivisionPolygonsTest: Actually added factory methods promised in Javadoc…</li>
</ul>
<h4>Voronoi Diagrams</h4>
<ul>
<li>Allowed special case of only two generator sites, with a single edge separating them and no natural vertices.</li>
<li>VoronoiResults.voronoiRegions:
<ul>
<li>Fixed invalid result when edges exactly hit corners of the clipping rectangle.</li>
<li>Source: Extensive rewrite for two-site support, bug fixes, and general legibility.</li>
</ul>
</li>
<li>VoronoiTest:
<ul>
<li>Added tests for both cases described above.</li>
<li>Random Voronoi test now also randomizes boundaries and runs repeatedly.</li>
<li>Extracted generation of random Voronoi diagrams as factory method.</li>
</ul>
</li>
</ul>
<h3>Version 6.1.0 (released 2018-03-01)</h3>
<p>See <a href="https://news.kynosarges.org/2018/03/01/tektosyne-6-1-0-released/">Tektosyne 6.1.0 Released</a> for more information.</p>
<ul>
<li>Updated to Java SE 9.0.4. The precompiled library JAR still targets Java SE 8.</li>
<li>Added proper manifest to library JAR file.</li>
<li>GeoUtils, MathUtils, Tests &amp; Demo: Changed Random to faster ThreadLocalRandom.</li>
<li>NodeList1/2Test: Changed deprecated “new Integer(…)” to Integer.valueOf(…).</li>
<li>PointI.toString: Fixed coordinates being labeled “width/height” rather than “x/y.”</li>
<li>Demo: Improved tooltips on numerical Spinner controls.</li>
<li>ReadMe: Removed notes on Java and JavaFX issues which appear to be obsolete as of Java SE 9.</li>
<li>Source: Changed project from NetBeans to IntelliJ IDEA.</li>
<li>Source: Fixed minor issues detected by IntelliJ IDEA.</li>
</ul>
<h4>Float/Double.MIN_VALUE</h4>
<ul>
<li>Float/Double.MIN_VALUE is the smallest <em>positive</em> value, not the smallest negative value as for integral types. NEGATIVE_INFINITY must be used instead, or algorithms will fail for negative arguments.</li>
<li>Float/Double.MAX_VALUE works the same as for integral types but was also changed to POSITIVE_INFINITY where needed for symmetry.</li>
<li>Fortran.max/min: Changed default values for Float/Double arguments from MIN/MAX_VALUE to NEGATIVE/POSITIVE_INFINITY.</li>
<li>RectD.circumscribe(PointD...), SubdivisionSearch.Trapezoid (internal use): Changed search initializations from MIN/MAX_VALUE to NEGATIVE/POSITIVE_INFINITY.</li>
<li>Changed unit tests for the cases described above to include negative values.</li>
</ul>
<h4>Voronoi Diagrams</h4>
<ul>
<li>Fixed Voronoi edges being output twice when they do not touch any vertices, only the clipping bounds.</li>
<li>VoronoiResults.voronoiRegions:
<ul>
<li>Fixed invalid result when a Voronoi region must be closed over three corners of the clipping rectangle. Previously this case was mistakenly closed over the opposite single corner.</li>
<li>Fixed open regions not being closed for exactly horizontal or vertical edges.</li>
<li>Added unit tests for the cases described above.</li>
<li>Upgraded some assertion failures to exceptions.</li>
</ul>
</li>
</ul>
<h3>Version 6.0.1 (released 2017-04-08)</h3>
<p>Fixed several FindBugs complaints.</p>
<ul>
<li>PointDComparator/X/Y: Implemented Serializable interface for compatibility with serializable collections. This also required default constructors that leave epsilon at zero.</li>
<li>MultiLineIntersection: Added exceptions for illegal MultiLinePoint.Line location values.</li>
<li>PolygonGrid: Changed switch/case statements without default to simpler if/else statements.</li>
<li>RegularPolygon.inscribe: Clarified intentional truncating integer division.</li>
<li>SubdivisionSearch: Several small changes to shut up FindBugs, no functional differences.</li>
</ul>
<h3>Version 6.0.0 (released 2016-12-14)</h3>
<p><a href="https://news.kynosarges.org/2016/12/14/tektosyne-library-for-java/">Complete rewrite</a> in Java SE 8u112 with JavaFX demo application.</p>
<h3>Version 1.0.0 (released 2002-05-27)</h3>
<p>Initial release for the .NET Framework, updated through version 5.6.6 (2015-09-30). See the WhatsNew file packaged with the .NET edition for a complete version history of that edition.</p>
</body>
</html>
111 changes: 111 additions & 0 deletions project.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
html {
overflow-y: scroll;
font-size: 100%;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}

*, *:before, *:after {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}

body, table {
font-family: Georgia, serif;
font-size: 16px; font-size: 1rem;
text-rendering: optimizeLegibility;
}

body {
line-height: 1.5; margin: 0;
min-width: 320px; min-width: 20rem;
max-width: 832px; max-width: 52rem;
padding: 0 16px; padding: 0 1rem;
vertical-align: top; text-align: justify;
-moz-hyphens: auto; -ms-hyphens: auto; -webkit-hyphens: auto; hyphens: auto;
word-wrap: break-all;
}

acronym { font-variant: small-caps; }
blockquote { font-style: italic; }
c, code, pre {
font-family: Consolas, monospace;
font-size: 14px; font-size: .875rem;
}

h1, h2, h3, h4, h5, h6 {
line-height: normal; text-align: left;
}
h3, h5 {
font-style: italic; text-align: left;
}
h4, h6, kbd, strong {
font-family: "Trebuchet MS", sans-serif;
}
pre { line-height: 1.5; }
sub, sup { line-height: 0; }

table {
border: 0; border-collapse: collapse;
border-spacing: 0; margin: 0; padding: 0;
}
th { text-align: center; }
th, td:first-child { white-space: nowrap; }

table.data { white-space: nowrap; }
table.data td, table.data th {
padding: 0 8px 0 8px;
padding: 0 .5rem 0 .5rem;
}
table.data th {
background-color: #E8E8E8;
border: solid 1px #E8E8E8;
font-family: "Trebuchet MS", sans-serif;
font-size: 14px; font-size: .875rem;
}

img { border-style: none; }

p {
text-indent: 0;
margin: 16px 0 16px 0; margin: 1rem 0 1rem 0;
}
p.first {
text-indent: 0;
margin: 16px 0 0 0; margin: 1rem 0 0 0;
}
p.next {
text-indent: 32px; text-indent: 2rem;
margin: 0;
}
p.last {
text-indent: 32px; text-indent: 2rem;
margin: 0 0 16px 0; margin: 0 0 1rem 0;
}

ul { list-style-type: square; }
ul ul { list-style-type: disc; }
ol, ul {
margin: 0 0 16px 32px; margin: 0 0 1rem 2rem;
padding-left: 0;
}

ul.stars > li, ul.term > li {
list-style-type: none;
text-indent: -32px; text-indent: -2rem;
}
ol.space > li, ul.space > li {
margin: 16px 0 16px 0; margin: 1rem 0 1rem 0;
}
ul.term-space > li {
list-style-type: none;
margin: 16px 0 16px 0; margin: 1rem 0 1rem 0;
text-indent: -32px; text-indent: -2rem;
}
ul.term span {
display: inline-block;
margin: 0; padding: 0;
text-indent: 0;
text-align: right;
}
4 changes: 2 additions & 2 deletions tektosyne-demo/src/main/java/META-INF/MANIFEST.MF
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ Manifest-Version: 1.0
Class-Path: Tektosyne.jar
Main-Class: org.kynosarges.tektosyne.demo.TektosyneDemo
Specification-Title: Tektosyne Demo
Specification-Version: 6.2.0
Specification-Version: 6.3.2
Specification-Vendor: Christoph Nahr
Implementation-Version: 2018-03-25
Implementation-Version: 2021-07-18
Loading