// Copyright 2006, FreeHEP.
package org.freehep.graphicsio.emf.gdiplus;
import java.awt.geom.AffineTransform;
import java.io.IOException;
import org.freehep.graphicsio.emf.EMFInputStream;
import org.freehep.graphicsio.emf.EMFOutputStream;
/**
* The MultiplyWorldTransform metafile record represents a call to
* Graphics.MultiplyTransform, which multiplies the current transformation
* matrix by a given matrix value.
*
* @author Mark Donszelmann
* @version $Id: MultiplyWorldTransform.java,v 1.1 2009-08-17 21:44:44 murkle
* Exp $
*/
public class MultiplyWorldTransform extends EMFPlusTag {
private static final int CONCATENATE = 0x2000;
private AffineTransform transform;
public MultiplyWorldTransform() {
super(44, 1);
}
public MultiplyWorldTransform(AffineTransform transform, boolean prepend) {
this();
flags = prepend ? 0x0000 : CONCATENATE;
this.transform = transform;
}
@Override
public EMFPlusTag read(int tagID, int flags, EMFInputStream emf, int len)
throws IOException {
MultiplyWorldTransform tag = new MultiplyWorldTransform();
tag.flags = flags;
tag.transform = new AffineTransform(emf.readFLOAT(), emf.readFLOAT(),
emf.readFLOAT(), emf.readFLOAT(), emf.readFLOAT(),
emf.readFLOAT());
return tag;
}
@Override
public void write(int tagID, int flags, EMFOutputStream emf)
throws IOException {
GDIPlusObject.writeTransform(emf, transform);
}
}