Hi all,
The current implementation of "RotationCenter" uses the three XYZ values
as if they are in 1/100 Millimeter (Hmm). That is, if the values in ODF
file are in Hmm, then the shape behaves as expected. But that does not
fit the specifications.
The "RotationCenter" appears in the specifications as:
c3DRotationCenterX, c3DRotationCenterY, c3DRotationCenterZ in binary
MSOffice and Rich Text Format (RTF),
rotationcenter in VML,
draw:extrusion-rotation-center in ODF,
RotationCenter in API.
The descriptions are:
binary MS Office:
c3DRotationCenterX (4 bytes): A value of type FixedPoint, as specified
in [MS-OSHARED] section 2.2.1.6, that specifies a fraction of the
geometry’s scaled width and height. The default value for this property
is 0x00000000.
c3DRotationCenterY (4 bytes): A value of type FixedPoint, as specified
in [MS-OSHARED] section 2.2.1.6, that specifies a fraction of the
geometry’s scaled width and height. The default value for this property
is 0x00000000.
c3DRotationCenterZ (4 bytes): A value of type FixedPoint, as specified
in [MS-OSHARED] section 2.2.1.6, that specifies a fraction of the
geometry’s scaled width and height. The default value for this property
is 0x00000000.
Another document has
Property Type Default Description
c3DRotationCenterX LONG 0 rotation center x (16.16 or g-units)
c3DRotationCenterY LONG 0 rotation center y (16.16 or g-units)
c3DRotationCenterZ LONG 0 rotation center z (absolute (emus))
RTF:
Properties: c3DRotationCenterX, c3DRotationCenterY, c3DRotationCenterZ
Meaning: The X and Y values are a 16.16 fraction of the geometry width
and height, with (0,0) being at the center of the geometry. The Z value
must be in absolute units (EMUs).
VML: Specifies the center of rotation for a shape. Read/write. Vector3D.
Defines the offset of the rotation in terms of fractions of the shape's
size. The default value is 0,0,0.
ODF: The draw:extrusion-rotation-center attribute specifies the position
of a rotation center in shape-size fractions.
API: This attribute specifies the position of the rotate center in terms
of shape size fractions.
The rotation center has no tool in the user interface.
All of the descriptions use fractions for X-component and Y-component.
For Z-component only RTF and binary MS Office have explicit EMU as unit.
The other refer to shape size or to shape width and height, which I
think is not meaningful for the Z-component.
So what to do?
For X- and Y-component I can imagine:
Change implementation so, that X-component and Y-component are fractions
in CustomShapeGeometry. That requires changes in msdffimp.cxx#1812, in
escherex.cxx#2852, in EnhancedCustomShape3d.cxx#816. Others?
How to solve Z-component?
Kind regards,
Regina