# Transforming

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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.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;aNewMatrix2.getMatrix(aFlatMatrix);
// convert the flatMatrix to our HomogenMatrix3 structure
aHomogenMatrix3.Line1.Column1 = aFlatMatrix;
aHomogenMatrix3.Line2.Column1 = aFlatMatrix;
aHomogenMatrix3.Line1.Column2 = aFlatMatrix;
aHomogenMatrix3.Line2.Column2 = aFlatMatrix;
aHomogenMatrix3.Line1.Column3 = aFlatMatrix;
aHomogenMatrix3.Line2.Column3 = aFlatMatrix;
xPropSet.setPropertyValue("Transformation", aHomogenMatrix3);```