1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.imaging.common;
18
19 import java.io.FilterOutputStream;
20 import java.io.IOException;
21 import java.io.OutputStream;
22 import java.nio.ByteOrder;
23 import java.util.Objects;
24
25 public abstract class BinaryOutputStream extends FilterOutputStream {
26
27 public static BigEndianBinaryOutputStream bigEndian(final OutputStream outputStream) {
28 return new BigEndianBinaryOutputStream(outputStream);
29 }
30
31 @SuppressWarnings("resource")
32 public static BinaryOutputStream create(final OutputStream outputStream, final ByteOrder byteOrder) {
33 Objects.requireNonNull(outputStream, "outputStream");
34 Objects.requireNonNull(byteOrder, "byteOrder");
35 if (byteOrder == ByteOrder.LITTLE_ENDIAN) {
36 return littleEndian(outputStream);
37 }
38 if (byteOrder == ByteOrder.BIG_ENDIAN) {
39 return bigEndian(outputStream);
40 }
41 throw new UnsupportedOperationException(byteOrder.toString());
42 }
43
44 public static LittleEndianBinaryOutputStream littleEndian(final OutputStream outputStream) {
45 return new LittleEndianBinaryOutputStream(outputStream);
46 }
47
48 public BinaryOutputStream(final OutputStream outputStream) {
49 super(outputStream);
50 }
51
52 public BinaryOutputStream(final OutputStream outputStream, final ByteOrder byteOrder) {
53 super(outputStream);
54 }
55
56 public abstract void write2Bytes(int value) throws IOException;
57
58 public abstract void write3Bytes(int value) throws IOException;
59
60 public abstract void write4Bytes(int value) throws IOException;
61 }