1 32 package com.imagero.uio.io; 33 34 import java.io.IOException ; 35 import java.io.InputStream ; 36 37 42 public class RLE8InputStream extends RLEInputStream { 43 44 int numSamples, value; 45 boolean copyLiter; 46 boolean ignoreByte; 47 48 public RLE8InputStream(InputStream in) { 49 super(in); 50 } 51 52 public int read() throws IOException { 53 if (numSamples == 0) { 54 if (ignoreByte) { 55 ignoreByte = false; 56 in.read(); 57 } 58 int l = in.read(); 59 if (l == 0) { 60 value = in.read(); 61 switch (value) { 62 case 0: 63 throw new EndOfLineException(); 64 case 1: 65 finished = true; 66 throw new EndOfBitmapException(); 67 case 2: 68 int x = in.read(); 69 int y = in.read(); 70 throw new DeltaRecordException(Integer.toHexString(x) + Integer.toHexString(y)); 71 default: 72 copyLiter = true; 73 numSamples = value; 74 if ((numSamples & 1) != 0) { 75 ignoreByte = true; 76 } 77 } 78 } 79 else { 80 numSamples = l; 81 copyLiter = false; 82 value = in.read(); 83 } 84 } 85 numSamples--; 86 if (copyLiter) { 87 return in.read(); 88 } 89 else { 90 return value; 91 } 92 } 93 } 94 | Popular Tags |