1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.imaging.formats.tiff.fieldtypes;
18
19 import java.nio.ByteOrder;
20
21 import org.apache.commons.imaging.ImagingException;
22 import org.apache.commons.imaging.common.Allocator;
23 import org.apache.commons.imaging.common.ByteConversions;
24 import org.apache.commons.imaging.formats.tiff.TiffField;
25
26
27
28
29 public class FieldTypeLong8 extends AbstractFieldType {
30 public FieldTypeLong8(final int type, final String name) {
31 super(type, name, 8);
32 }
33
34
35
36
37
38
39
40 @Override
41 public Object getValue(final TiffField entry) {
42 final byte[] bytes = entry.getByteArrayValue();
43 if (entry.getCount() == 1) {
44 return ByteConversions.toInt(bytes, entry.getByteOrder());
45 }
46 return ByteConversions.toLongs(bytes, entry.getByteOrder());
47 }
48
49 @Override
50 public byte[] writeData(final Object o, final ByteOrder byteOrder) throws ImagingException {
51 if (o instanceof Integer) {
52 return ByteConversions.toBytes((Integer) o, byteOrder);
53 }
54 if (o instanceof int[]) {
55 final int[] numbers = (int[]) o;
56 return ByteConversions.toBytes(numbers, byteOrder);
57 }
58 if (!(o instanceof Integer[])) {
59 throw new ImagingException("Invalid data", o);
60 }
61 final Integer[] numbers = (Integer[]) o;
62 final int[] values = Allocator.intArray(numbers.length);
63 System.arraycopy(numbers, 0, values, 0, values.length);
64 return ByteConversions.toBytes(values, byteOrder);
65 }
66
67 }