Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


On 28/07/12 11:21, Michael Meeks wrote:
Hi Christina :-)

On Fri, 2012-07-27 at 21:39 +0200, Christina Roßmanith wrote:
a gradient angle given without a unith should be interpreted as degrees, 
but in my example a value of draw:angle="90" shows up in LibO as 9 
degrees. If I change it to draw:angle="90deg" the value is read correctly.

you mean this angle here from ODF 1.2 part1, right:

19.112 draw:angle
The draw:angle attribute specifies an angle that rotates the axis at which the gradient values 
are interpolated. This attribute is ignored for radial style gradients. 
The draw:angle attribute is usable with the following elements: <draw:gradient> 16.40.1 and 
<draw:opacity> 16.40.7.
The draw:angle attribute has the data type angle 18.3.1.

18.3.1 angle
An angle, as defined in §4.1 of [SVG]. An angle is a double value that may be followed 
immediately by one of the following angle unit identifiers: deg (degrees), grad (gradiants) or 
rad (radians). If no unit identifier is specified, the value is assumed to be in degrees.
Note: OpenDocument v1.1 did not support angle specifications that contain an angle unit 
identifier.  Angle unit identifiers should be omitted for compatibility with OpenDocument v1.1.

the code here looks like it's importing that, but since it just uses
convertNumber, which does not handle any units and just ignores them, i
don't understand how "90" would result in something different than
"90deg".  (there's an identical bit of code in TransGradientStyle.cxx)

xmloff/source/style/GradientStyle.cxx:        case XML_TOK_GRADIENT_ANGLE:
xmloff/source/style/GradientStyle.cxx-            {
xmloff/source/style/GradientStyle.cxx-                sal_Int32 nValue;
xmloff/source/style/GradientStyle.cxx-                ::sax::Converter::convertNumber( nValue, 
rStrValue, 0, 3600 );
xmloff/source/style/GradientStyle.cxx-                aGradient.Angle = sal_Int16( nValue );
xmloff/source/style/GradientStyle.cxx-            }
xmloff/source/style/GradientStyle.cxx-            break;

      To here - so ...

Thus the question is: Where do I have to look to fix it?

      Is it possible that that 3600 should be 360 ? or is there some tends of
a degree-as-int going on there ? :-)

it looks like we don't implement support for units like "deg" or "rad"
or "grad" at all; this should be added to sax::Converter, something like
a convertAngle function.

then if it is indeed the case that we import the number as 1/10 degree
and not degree as specified (which i haven't checked, but the "3600"
looks very much like that), we have a bigger problem.  in that case we
need to change the import and export to do it correctly, and put a
special case hack into the import to check the generator and fix up
wrong values from old OOo/LO versions.


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.