Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 1999-2101 Alibaba Group.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *      http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package com.alibaba.simpleimage.io;
 
 

Author(s):
wendell
 
 public class ImageBitsInputStream implements ImageInputStream {
 
     private InputStream in;
 
     // bits buffer
     private int         b   = 0;
     private int         cnt = 0;
 
     public ImageBitsInputStream(InputStream input){
          = input;
     }
 
     /*
      * (non-Javadoc)
      * @see com.alibaba.simpleimage.jpeg.ImageInputStream#close()
      */
     public void close() throws IOException {
         .close();
     }
 
     /*
      * (non-Javadoc)
      * @see com.alibaba.simpleimage.jpeg.ImageInputStream#read()
      */
     public int read() throws IOException {
          = 0;
 
         return .read();
     }
 
     /*
      * (non-Javadoc)
      * @see com.alibaba.simpleimage.jpeg.ImageInputStream#read(byte[], int, int)
      */
     public int read(byte[] bint offint lenthrows IOException {
          = 0;
 
         return .read(bofflen);
     }
 
     /*
      * (non-Javadoc)
      * @see com.alibaba.simpleimage.jpeg.ImageInputStream#read(byte[])
      */
     public int read(byte[] bthrows IOException {
          = 0;
 
         return .read(b);
     }
 
     /*
      * (non-Javadoc)
      * @see com.alibaba.simpleimage.jpeg.ImageInputStream#readBit()
      */
     public int readBit() throws IOExceptionJPEGMarkerException {
         int bit = 0;
 
         if ( == 0) {
              = .read();
              = 8;
 
             if ( == 0xFF) {
                 // Loop here to discard any padding FF's on terminating marker
                 do {
                      = .read();
                 } while ( == 0xFF);
 
                 if ( == 0) {
                     /* Found FF/00, which represents an FF data byte */
                      = 0xFF;
                      = 8;
                 } else {
                     throw new JPEGMarkerException();
                }
            } else if ( == -1) {
                throw new JPEGMarkerException();
            }
        }
        bit =  >> 7;
        --;
         =  << 1;
        return bit & 0x1;
    }
    /*
     * (non-Javadoc)
     * @see com.alibaba.simpleimage.jpeg.ImageInputStream#readBits(int)
     */
    public long readBits(int bitthrows IOExceptionJPEGMarkerException {
        if (bit < 0) {
            throw new IllegalArgumentException("bit must be greater than zero");
        }
        int i = 0, v = 0;
        while (i != bit) {
            i++;
            v = (v << 1) | readBit();
        }
        return v;
    }
    /*
     * (non-Javadoc)
     * @see com.alibaba.simpleimage.jpeg.ImageInputStream#skipBytes(int)
     */
    public int skipBytes(int nthrows IOException {
         = 0;
        int total = 0;
        int cur = 0;
        while ((total < n) && ((cur = (int.skip(n - total)) > 0)) {
            total += cur;
        }
        return total;
    }
    /*
     * (non-Javadoc)
     * @see com.alibaba.simpleimage.jpeg.ImageInputStream#readUnsignedShort()
     */
    public int readUnsignedShort() throws IOException {
         = 0;
        int ch1 = .read();
        int ch2 = .read();
        if ((ch1 | ch2) < 0) throw new EOFException();
        return (ch1 << 8) + (ch2 << 0);
    }
    /*
     * (non-Javadoc)
     * @see com.alibaba.simpleimage.jpeg.ImageInputStream#readShort()
     */
    public short readShort() throws IOException {
         = 0;
        int ch1 = .read();
        int ch2 = .read();
        if ((ch1 | ch2) < 0) throw new EOFException();
        return (short) ((ch1 << 8) + (ch2 << 0));
    }
    /*
     * (non-Javadoc)
     * @see com.alibaba.simpleimage.jpeg.ImageInputStream#readByte()
     */
    public byte readByte() throws IOException {
         = 0;
        int ch = .read();
        if (ch < 0) throw new EOFException();
        return (byte) (ch);
    }
    public void resetBuffer() throws IOException {
         = 0;
    }
New to GrepCode? Check out our FAQ X