On Wed, 6 Sep 2023 23:10:11 GMT, Kevin Rushforth <k...@openjdk.org> wrote:
>> Introduces Region.snapInnerSpaceX/Y() methods for dealing with inner space >> (using Math.floor), see for instance >> [JDK-8299753](https://bugs.openjdk.org/browse/JDK-8299753), using existing >> methods Region.snapPortionX/Y(). > > modules/javafx.graphics/src/test/java/test/javafx/scene/layout/RegionTest.java > line 1289: > >> 1287: assertEquals(Double.POSITIVE_INFINITY, >> region.snapInnerSpaceY(Double.MAX_VALUE), 0.0); >> 1288: assertEquals(Double.NEGATIVE_INFINITY, >> region.snapInnerSpaceX(-Double.MAX_VALUE), 0.0); >> 1289: assertEquals(Double.NEGATIVE_INFINITY, >> region.snapInnerSpaceY(-Double.MAX_VALUE), 0.0); > > Why is the expected value infinity here? Good question! ScaledMath.floor() goes through Math.floor(d + Math.ulp(d)) / scale; which results in a value greater than Double.MAX_VALUE for positive input. Similarly, the negative input goes through Math.ceil(d - Math.ulp(d)) / scale; and the result is less than -Double.MAX_VALUE, so negative infinity. It's not really important because all these are way beyond the values acceptable as coordinates. ------------- PR Review Comment: https://git.openjdk.org/jfx/pull/1190#discussion_r1318828360