61 lines
2.3 KiB
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;
|
|
}
|
|
}
|
|
}
|