1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /* ====================================================================
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ==================================================================== */
-
- package org.apache.poi.hwmf.record;
-
- import java.io.IOException;
-
- import org.apache.poi.util.LittleEndianConsts;
- import org.apache.poi.util.LittleEndianInputStream;
-
- public class HwmfHeader {
- private int type;
- private int recordSize;
- private int version;
- private int filesize;
- private int numberOfObjects;
- private long maxRecord;
- private int numberOfMembers;
-
- public HwmfHeader(LittleEndianInputStream leis) throws IOException {
- // Type (2 bytes): A 16-bit unsigned integer that defines the type of metafile
- // MEMORYMETAFILE = 0x0001, DISKMETAFILE = 0x0002
- type = leis.readUShort();
-
- // HeaderSize (2 bytes): A 16-bit unsigned integer that defines the number
- // of 16-bit words in the header.
- recordSize = leis.readUShort();
- int bytesLeft = recordSize*LittleEndianConsts.SHORT_SIZE-4;
-
- // Version (2 bytes): A 16-bit unsigned integer that defines the metafile version.
- // METAVERSION100 = 0x0100, METAVERSION300 = 0x0300
- version = leis.readUShort();
- bytesLeft -= LittleEndianConsts.SHORT_SIZE;
-
- // SizeLow (2 bytes): A 16-bit unsigned integer that defines the low-order word
- // of the number of 16-bit words in the entire metafile.
- // SizeHigh (2 bytes): A 16-bit unsigned integer that defines the high-order word
- // of the number of 16-bit words in the entire metafile.
- filesize = leis.readInt();
- bytesLeft -= LittleEndianConsts.INT_SIZE;
-
- // NumberOfObjects (2 bytes): A 16-bit unsigned integer that specifies the number
- // of graphics objects that are defined in the entire metafile. These objects include
- // brushes, pens, and the other objects
- numberOfObjects = leis.readUShort();
- bytesLeft -= LittleEndianConsts.SHORT_SIZE;
-
- // MaxRecord (4 bytes): A 32-bit unsigned integer that specifies the size of the
- // largest record used in the metafile (in 16-bit elements).
- maxRecord = leis.readUInt();
- bytesLeft -= LittleEndianConsts.INT_SIZE;
-
- // NumberOfMembers (2 bytes): A 16-bit unsigned integer that is not used.
- // It SHOULD be 0x0000.
- numberOfMembers = leis.readUShort();
- bytesLeft -= LittleEndianConsts.SHORT_SIZE;
-
- if (bytesLeft > 0) {
- long len = leis.skip(bytesLeft);
- assert(len == bytesLeft);
- }
- }
- }
|