poi/src/scratchpad/src/org/apache/poi/hwmf/record/WmfPlaceableHeader.java

61 lines
2.3 KiB
Java

package org.apache.poi.hwmf.record;
import java.io.IOException;
import org.apache.poi.util.LittleEndianConsts;
import org.apache.poi.util.LittleEndianInputStream;
public class WmfPlaceableHeader {
public static int WMF_HEADER_MAGIC = 0x9AC6CDD7;
protected WmfPlaceableHeader(LittleEndianInputStream leis) throws IOException {
/*
* HWmf (2 bytes): The resource handle to the metafile, when the metafile is in memory. When
* the metafile is on disk, this field MUST contain 0x0000. This attribute of the metafile is
* specified in the Type field of the META_HEADER record.
*/
leis.readShort(); // ignore
/*
* BoundingBox (8 bytes): The destination rectangle, measured in logical units, for displaying
* the metafile. The size of a logical unit is specified by the Inch field.
*/
int x1 = leis.readShort();
int y1 = leis.readShort();
int x2 = leis.readShort();
int y2 = leis.readShort();
/*
* Inch (2 bytes): The number of logical units per inch used to represent the image.
* This value can be used to scale an image.
* By convention, an image is considered to be recorded at 1440 logical units (twips) per inch.
* Thus, a value of 720 specifies that the image SHOULD be rendered at twice its normal size,
* and a value of 2880 specifies that the image SHOULD be rendered at half its normal size.
*/
int inch = leis.readShort();
/*
* Reserved (4 bytes): A field that is not used and MUST be set to 0x00000000.
*/
leis.readInt();
/*
* Checksum (2 bytes): A checksum for the previous 10 16-bit values in the header.
* This value can be used to determine whether the metafile has become corrupted.
*/
leis.readShort();
}
public static WmfPlaceableHeader readHeader(LittleEndianInputStream leis) throws IOException {
leis.mark(LittleEndianConsts.INT_SIZE);
int magic = leis.readInt();
if (magic == WMF_HEADER_MAGIC) {
return new WmfPlaceableHeader(leis);
} else {
leis.reset();
return null;
}
}
}