55
56 ImageStream(byte[] bytes, ByteOrder byteOrder) {
57 buffer = ByteBuffer.wrap(bytes);
58 buffer.order(byteOrder);
59 }
60
61 ImageStream(ByteBuffer buffer) {
62 this.buffer = buffer;
63 }
64
65 ImageStream align(int alignment) {
66 int padding = (getSize() - 1) & ((1 << alignment) - 1);
67
68 for (int i = 0; i < padding; i++) {
69 put((byte)0);
70 }
71
72 return this;
73 }
74
75 private void ensure(int needs) {
76 assert 0 <= needs : "Negative needs";
77
78 if (needs > buffer.remaining()) {
79 byte[] bytes = buffer.array();
80 ByteOrder byteOrder = buffer.order();
81 int position = buffer.position();
82 int newSize = needs <= bytes.length ? bytes.length << 1 : position + needs;
83 buffer = ByteBuffer.allocate(newSize);
84 buffer.order(byteOrder);
85 buffer.put(bytes, 0, position);
86 }
87 }
88
89 boolean hasByte() {
90 return buffer.remaining() != 0;
91 }
92
93 boolean hasBytes(int needs) {
94 return needs <= buffer.remaining();
95 }
|
55
56 ImageStream(byte[] bytes, ByteOrder byteOrder) {
57 buffer = ByteBuffer.wrap(bytes);
58 buffer.order(byteOrder);
59 }
60
61 ImageStream(ByteBuffer buffer) {
62 this.buffer = buffer;
63 }
64
65 ImageStream align(int alignment) {
66 int padding = (getSize() - 1) & ((1 << alignment) - 1);
67
68 for (int i = 0; i < padding; i++) {
69 put((byte)0);
70 }
71
72 return this;
73 }
74
75 void ensure(int needs) {
76 assert 0 <= needs : "Negative needs";
77
78 if (needs > buffer.remaining()) {
79 byte[] bytes = buffer.array();
80 ByteOrder byteOrder = buffer.order();
81 int position = buffer.position();
82 int newSize = needs <= bytes.length ? bytes.length << 1 : position + needs;
83 buffer = ByteBuffer.allocate(newSize);
84 buffer.order(byteOrder);
85 buffer.put(bytes, 0, position);
86 }
87 }
88
89 boolean hasByte() {
90 return buffer.remaining() != 0;
91 }
92
93 boolean hasBytes(int needs) {
94 return needs <= buffer.remaining();
95 }
|