Problems with item "RotationCenter" in item "Extrusion" in the property "CustomShapeGeometry"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux