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. _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice