Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8230728

Thin stroked shapes are not rendered if affine transform has flip bit

    Details

    • Subcomponent:
      2d
    • Introduced In Version:
      9
    • Resolved In Build:
      b16

      Backports

        Description

        ICEpdf team reported a rendering issue in Marlin renderer (the bug comes from Pisces code) due to at.getDeterminant() is negative in userSpaceLineWidth() that leads to a NaN stroke width:
        https://github.com/bourgesl/marlin-renderer/issues/36

        "Debugging MarlinRenderingEngine, execution steps into line 208:
        widthScale = (float)Math.sqrt(at.getDeterminant());
        In our scenario, at.getDeterminant() returns the value -0.47389273965262657 and widthScale and thus the value returned by userSpaceLineWidth(AffineTransform, float) is NaN.

        Using the absolute value of at.getDeterminant(), the lines seem to get rendered correctly, the value returned by userSpaceLineWidth(AffineTransform, float) then is 0.18158083"

        After investigation, using the absolute value (before sqrt) is the right solution.

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  lbourges Laurent Bourgès
                  Reporter:
                  lbourges Laurent Bourgès
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  3 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: