komarovd95 opened a new pull request, #601:
URL: https://github.com/apache/poi/pull/601

   We've faced an issue with elliptical arcs in VSDX files - when a control 
point of the elliptic arc is co-linear (i.e. lies on the same line) with begin 
and end points of the arc, it leads to very huge numbers when calculating 
coordinates of the center of the arc. 
   
   It happens because slopes of two tangents (class `EllipticalArcTo` lines 198 
and 201) are equal to each other which leads to division by zero (or by value 
that is very near to zero).
   
   As the solution it's proposed to check co-linearity before calculating an 
arc. I added this condition check into `EllipticalArcTo#createEllipticalArc` 
method to also cover corner-cases with `ArcTo` (which uses the method under the 
hood) and with `RelEllipticalArcTo`. 
   
   Below you can find an example that high-lights the problem. 
   <img width="270" alt="Screenshot 2024-02-29 at 16 11 00" 
src="https://github.com/apache/poi/assets/11631627/9b4cd6f8-f453-407c-b91e-db23b41df9d8";>
   
   And after the fix: 
   <img width="270" alt="Screenshot 2024-02-29 at 16 12 11" 
src="https://github.com/apache/poi/assets/11631627/147ababc-cdd8-4311-8c35-decc7749cd7b";>
   
   The file itself (just change extension to `.vsdx` since GitHub does not 
allow to upload VSDX files)
   [Single 
Icon.zip](https://github.com/apache/poi/files/14450770/Single.Icon.zip)
   
   
     


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@poi.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@poi.apache.org
For additional commands, e-mail: dev-h...@poi.apache.org

Reply via email to