https://bugs.documentfoundation.org/show_bug.cgi?id=161327

--- Comment #8 from Regina Henschel <rb.hensc...@t-online.de> ---
My investigation (see below) shows, that we need a more general approach as
currently in https://gerrit.libreoffice.org/c/core/+/168336

Perhaps the following?
Add
bool Converter::convertAngleWithUnit(double& rAngle, std::u16string_view
rString, bool& rHasUnit)
bool Converter::convertAngleWithUnit(double& rAngle, std::string_view rString,
bool& rHasUnit)
and use it where currently convertNumber or convertDouble is used for angles.

Not only converting the angle with unit to degree, but inform whether there was
a unit, allows to use it in Converter::convertAngle and for the cases
(dr3d:end-angle and draw:rotation in hatch) where the wrongly written 1/10th of
a degree has to be considered.

So make all cases able to read angles with unit. 

In cases were currently unit less degree is written, we need not change the
export but only the import.

In cases were currently unit less 1/10th of a degree is written, we will need
to export unit 'deg' at some time, when all active versions are able to read
units. ODF 1.4 is likely too early, but ODF 1.5 will work.


And these are the results of my investigation (hopefully correct):

None of the cases is able to import angle with units.
None of the cases exports angle units.

(A) writes unit-less 1/10th of a degree
    -----------------------------------
    draw:rotation => UNO FillHatch.Angle
    dr3d:end-angle => UNO D3DEndAngle (this bugreport)

(B) export: unit-less degree
    import: ignores units, takes number part as degree
    --------------------------------------------------
    common-draw-circle-ellipse-attlist
        draw:start-angle => UNO CircleStartAngle
        draw:end-angle => UNO CircleEndAngle

    common-rotation-angle-attlist
        chart:angle-offset => UNO StartingAngle

    in charts, e.g. in title and axis label
        style:rotation-angle => UNO TextRotation

    dr3d-scene-attlist
        dr3d:shadow-slant => UNO D3DSceneShadowSlant

    draw-enhanced-geometry-attlist
        draw:text-rotate-angle => UNO TextRotateAngle (in CustomShapeGeometry)
        draw:extrusion-rotation-angle => UNO RotateAngle
(CustomShapeGeometry.Extrusion)
        draw:extrusion-skew => UNO Skew (in CustomShapeGeometry.Extrusion)

    draw:caption-angle on "style-graphic-properties-attlist"
        draw:caption-angle => UNO CaptionAngle (can be set/get in macros, but
has no effect in rendering)

(C) export: unit-less degree
    import: number with unit is not imported at all, results in default 0°
    ----------------------------------------------------------------------
    table-cell-properties-attlist
        style:rotation-angle => UNO RotateAngle

(D) export: unit-less degree
    import: unit-less degree values are mapped to 0, 90 and 270; others not
supported
            number with unit is not imported at all, results in default value
0°
   
-------------------------------------------------------------------------------------
    style-text-properties-attlist in character styles
        style:text-rotation-angle => UNO CharRotation

(E) style:text-rotation-angle in number format, list or outline is not
implemented

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to