| OLD | NEW |
| (Empty) |
| 1 // LZ.OutWindow | |
| 2 | |
| 3 package SevenZip.Compression.LZ; | |
| 4 | |
| 5 import java.io.IOException; | |
| 6 | |
| 7 public class OutWindow | |
| 8 { | |
| 9 byte[] _buffer; | |
| 10 int _pos; | |
| 11 int _windowSize = 0; | |
| 12 int _streamPos; | |
| 13 java.io.OutputStream _stream; | |
| 14 | |
| 15 public void Create(int windowSize) | |
| 16 { | |
| 17 if (_buffer == null || _windowSize != windowSize) | |
| 18 _buffer = new byte[windowSize]; | |
| 19 _windowSize = windowSize; | |
| 20 _pos = 0; | |
| 21 _streamPos = 0; | |
| 22 } | |
| 23 | |
| 24 public void SetStream(java.io.OutputStream stream) throws IOException | |
| 25 { | |
| 26 ReleaseStream(); | |
| 27 _stream = stream; | |
| 28 } | |
| 29 | |
| 30 public void ReleaseStream() throws IOException | |
| 31 { | |
| 32 Flush(); | |
| 33 _stream = null; | |
| 34 } | |
| 35 | |
| 36 public void Init(boolean solid) | |
| 37 { | |
| 38 if (!solid) | |
| 39 { | |
| 40 _streamPos = 0; | |
| 41 _pos = 0; | |
| 42 } | |
| 43 } | |
| 44 | |
| 45 public void Flush() throws IOException | |
| 46 { | |
| 47 int size = _pos - _streamPos; | |
| 48 if (size == 0) | |
| 49 return; | |
| 50 _stream.write(_buffer, _streamPos, size); | |
| 51 if (_pos >= _windowSize) | |
| 52 _pos = 0; | |
| 53 _streamPos = _pos; | |
| 54 } | |
| 55 | |
| 56 public void CopyBlock(int distance, int len) throws IOException | |
| 57 { | |
| 58 int pos = _pos - distance - 1; | |
| 59 if (pos < 0) | |
| 60 pos += _windowSize; | |
| 61 for (; len != 0; len--) | |
| 62 { | |
| 63 if (pos >= _windowSize) | |
| 64 pos = 0; | |
| 65 _buffer[_pos++] = _buffer[pos++]; | |
| 66 if (_pos >= _windowSize) | |
| 67 Flush(); | |
| 68 } | |
| 69 } | |
| 70 | |
| 71 public void PutByte(byte b) throws IOException | |
| 72 { | |
| 73 _buffer[_pos++] = b; | |
| 74 if (_pos >= _windowSize) | |
| 75 Flush(); | |
| 76 } | |
| 77 | |
| 78 public byte GetByte(int distance) | |
| 79 { | |
| 80 int pos = _pos - distance - 1; | |
| 81 if (pos < 0) | |
| 82 pos += _windowSize; | |
| 83 return _buffer[pos]; | |
| 84 } | |
| 85 } | |
| OLD | NEW |