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
```