// Copyright 2006, FreeHEP.
package org.freehep.graphicsio.emf.gdiplus;
import java.awt.image.RenderedImage;
import java.io.IOException;
import org.freehep.graphicsio.emf.EMFInputStream;
import org.freehep.graphicsio.emf.EMFOutputStream;
/**
* The DrawImage metafile record represents a call to Graphics.DrawImage, which
* draws a bitmap or other image to the drawing surface.
*
* FIXME no 16 bit handling
*
* @author Mark Donszelmann
* @version $Id: DrawImage.java,v 1.1 2009-08-17 21:44:44 murkle Exp $
*/
public class DrawImage extends EMFPlusTag {
private RenderedImage image;
public DrawImage() {
super(26, 1);
}
public DrawImage(int imageIndex, RenderedImage image) {
this();
flags = imageIndex;
this.image = image;
}
@Override
public EMFPlusTag read(int tagID, int flags, EMFInputStream emf, int len)
throws IOException {
DrawImage tag = new DrawImage();
tag.flags = flags;
emf.readInt(); // image attributes
emf.readUINT(); // source unit
emf.readFLOAT(); // X, Y, W, H (src)
emf.readFLOAT();
emf.readFLOAT();
emf.readFLOAT();
emf.readFLOAT(); // X, Y, W, H (dst)
emf.readFLOAT();
emf.readFLOAT();
emf.readFLOAT();
return tag;
}
@Override
public void write(int tagID, int flags, EMFOutputStream emf)
throws IOException {
emf.writeInt(-1); // image attributes
emf.writeUINT(0x02); // source unit: pixel
emf.writeFLOAT(0); // X, Y, W, H (src)
emf.writeFLOAT(0);
emf.writeFLOAT(image.getWidth());
emf.writeFLOAT(image.getHeight());
emf.writeFLOAT(0); // X, Y, W, H (dst)
emf.writeFLOAT(0);
emf.writeFLOAT(image.getWidth());
emf.writeFLOAT(image.getHeight());
}
}