Problems with custom-shape path commando angle-ellipseto

Regina Henschel rb.henschel at t-online.de
Sat Jan 12 23:43:03 UTC 2019


Hi all,

I'm going to fix problems with custom shape commands U (angle-ellipse) 
and T (angle-ellipseto). The main problems currently are, that y-values 
are mirrored and negative angles are set to 0. 
https://bugs.documentfoundation.org/show_bug.cgi?id=121845

My work will only handle the case of "non-primitive" shape type and will 
have no effects on our MS-similar shapes.


My problem is the behavior for edge cases.
The ODF spec has the text:
"Draws a segment of an ellipse. The ellipse is specified by the 
center(x, y), the size(w, h) and the start-angle t0 in degrees and 
end-angle t1 in degrees. The segment is drawn clockwise."

The problem, that w and h has to be radius and not diameter, is tracked 
in https://issues.oasis-open.org/browse/OFFICE-3711. I will use radius.


Here my edge case problems:

1.
Which range is allowed for t0 and t1?
Minimal version: 0deg <= angle < 360deg.
Maximal version: all angles allowed.
I tend to allow all angles and interpret them as position modulo 360deg 
with right 0deg, down 90deg, left 180deg and up 270deg (from user point 
of view).

2.
What happens, if |t1-t0| >= 360deg?
I tend to draw a full ellipse starting in t0 and then add the segment 
till t1, both modulo 360. Start and end are needed, because the ellipse 
might have lines before and after.


3.
What happens, if t0 > t1?
I tend to use t0 and t1 modulo 360deg as positions and draw the segment 
clockwise. Thus start=330deg and end=90deg would draw a segment over 
0deg. I do not want to draw counter-clockwise, because for that, 
LibreOffice has introduced the command arcangleto (command G) with a 
start angle and a -possibly negative- swing angle. And the spec 
explicitly says "is drawn clockwise" for the T command.

What do you think?

I have collected a lot of such edge cases in 
http://bugs.documentfoundation.org/attachment.cgi?id=148277


I consider the implementation in PowerPoint as faulty, because it uses 
up 0deg, left 90deg, down 180deg and right 270deg.
I consider the implementation in Karbon as faulty, because the segments 
are drawn counter-clockwise.

Do you know other apps, not based on LibreOffice, which can read .odg or 
.odp files?

Kind regards
Regina


More information about the LibreOffice mailing list