# Difference between revisions of "Documentation/DevGuide/Drawings/Transforming"

OOoWikiBot (Talk | contribs) m (Robot: Changing Category:Drawing Documents and Presentation Documents) |
OOoWikiBot (Talk | contribs) m (FINAL VERSION FOR L10N) |
||

Line 7: | Line 7: | ||

|NextPage=Documentation/DevGuide/Drawings/Ordering | |NextPage=Documentation/DevGuide/Drawings/Ordering | ||

}} | }} | ||

− | {{DISPLAYTITLE:Transforming}} | + | {{Documentation/DevGuideLanguages|Documentation/DevGuide/Drawings/{{SUBPAGENAME}}}} |

+ | {{DISPLAYTITLE:Transforming}} | ||

Changing the size, rotation and shearing of an object can be done by using the transformation mechanism provided by {{PRODUCTNAME}}. The matrix of our API is a standard homogenous 3x3 matrix that may be used together with the java.awt.geom.AffineTransform class from Java. The transformation received describes the actual values of the transformations as a linear combination of the single matrices. The basic object without transformation has a size of (1, 1) and a position of (0, 0), and is not rotated or sheared. Thus, to transform an object get its matrix and multiply from the left side to influence the current appearance. To set the whole transformation directly, build a combined matrix of the single values mentioned above and apply it to the object. | Changing the size, rotation and shearing of an object can be done by using the transformation mechanism provided by {{PRODUCTNAME}}. The matrix of our API is a standard homogenous 3x3 matrix that may be used together with the java.awt.geom.AffineTransform class from Java. The transformation received describes the actual values of the transformations as a linear combination of the single matrices. The basic object without transformation has a size of (1, 1) and a position of (0, 0), and is not rotated or sheared. Thus, to transform an object get its matrix and multiply from the left side to influence the current appearance. To set the whole transformation directly, build a combined matrix of the single values mentioned above and apply it to the object. | ||

<!--[SOURCE:Drawing/ObjectTransformationDemo.java]--> | <!--[SOURCE:Drawing/ObjectTransformationDemo.java]--> |

## Revision as of 12:14, 15 May 2009

Changing the size, rotation and shearing of an object can be done by using the transformation mechanism provided by OpenOffice.org. The matrix of our API is a standard homogenous 3x3 matrix that may be used together with the java.awt.geom.AffineTransform class from Java. The transformation received describes the actual values of the transformations as a linear combination of the single matrices. The basic object without transformation has a size of (1, 1) and a position of (0, 0), and is not rotated or sheared. Thus, to transform an object get its matrix and multiply from the left side to influence the current appearance. To set the whole transformation directly, build a combined matrix of the single values mentioned above and apply it to the object.

XPropertySet xPropSet = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, xShape ); // take the current tranformation matrix HomogenMatrix3 aHomogenMatrix3 = (HomogenMatrix3)xPropSet.getPropertyValue("Transformation"); java.awt.geom.AffineTransform aOriginalMatrix = new java.awt.geom.AffineTransform(aHomogenMatrix3.Line1.Column1, aHomogenMatrix3.Line2.Column1, aHomogenMatrix3.Line1.Column2, aHomogenMatrix3.Line2.Column2, aHomogenMatrix3.Line1.Column3, aHomogenMatrix3.Line2.Column3 ); // rotate the object by 15 degrees AffineTransform aNewMatrix1 = new AffineTransform(); aNewMatrix1.setToRotation(Math.PI /180 * 15); aNewMatrix1.concatenate(aOriginalMatrix); // and translate the object by 2cm on the x-axis AffineTransform aNewMatrix2 = new AffineTransform(); aNewMatrix2.setToTranslation(2000, 0); aNewMatrix2.concatenate(aNewMatrix1); double aFlatMatrix[] = new double[6];aNewMatrix2.getMatrix(aFlatMatrix); // convert the flatMatrix to our HomogenMatrix3 structure aHomogenMatrix3.Line1.Column1 = aFlatMatrix[0]; aHomogenMatrix3.Line2.Column1 = aFlatMatrix[1]; aHomogenMatrix3.Line1.Column2 = aFlatMatrix[2]; aHomogenMatrix3.Line2.Column2 = aFlatMatrix[3]; aHomogenMatrix3.Line1.Column3 = aFlatMatrix[4]; aHomogenMatrix3.Line2.Column3 = aFlatMatrix[5]; xPropSet.setPropertyValue("Transformation", aHomogenMatrix3);

Content on this page is licensed under the Public Documentation License (PDL). |