Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * @(#)SubImageOutputStream.java  1.0  2011-07-20
   * 
   * Copyright (c) 2011 Werner Randelshofer, Goldau, Switzerland.
   * All rights reserved.
   * 
   * You may not use, copy or modify this file, except in compliance with the
   * license agreement you entered into with Werner Randelshofer.
   * For details see accompanying license terms.
  */
 package org.monte.media.io;
 
SubImageOutputStream.

Author(s):
Werner Randelshofer
Version:
1.0 2011-07-20 Created.
 
 public class SubImageOutputStream extends ImageOutputStreamImpl {
 
     private ImageOutputStream out;
     private long offset;
     private long length;
    
    
Whether flush and close request shall be forwarded to underlying stream
 
     private boolean forwardFlushAndClose;
 
     public SubImageOutputStream(ImageOutputStream outByteOrder bo,boolean forwardFlushAndClosethrows IOException {
         this(outout.getStreamPosition(),bo,forwardFlushAndClose);
     }
 
     public SubImageOutputStream(ImageOutputStream outlong offsetByteOrder bo,boolean forwardFlushAndClosethrows IOException {
         this. = out;
         this. = offset;
         this.=forwardFlushAndClose;
         setByteOrder(bo); 
         out.seek(offset);
     }
 
     private long available() throws IOException {
         checkClosed();
         long pos = .getStreamPosition();
         if (pos < ) {
             .seek();
             pos = ;
         }
         return  + .length() - pos;
     }
 
     @Override
     public int read() throws IOException {
         if (available() <= 0) {
             return -1;
         } else {
             return .read();
         }
     }
 
     @Override
     public int read(byte[] bint offint lenthrows IOException {
         long av = available();
         if (av <= 0) {
             return -1;
         } else {
             int result = .read(boff, (int) Math.min(lenav));
             return result;
         }
     }
 
     @Override
     public long getStreamPosition() throws IOException {
         return .getStreamPosition() - ;
     }
 
     @Override
     public void seek(long posthrows IOException {
         .seek(pos + );
         =Math.max(pos-+1,);
     }
 
     @Override
     public void flush() throws IOException {
         if () {
         .flush();
         }
     }
 
     @Override
     public void close() throws IOException {
         if () {
         super.close();
         }
     }
 
    @Override
    public long getFlushedPosition() {
        return .getFlushedPosition() - ;
    }

    
Default implementation returns false. Subclasses should override this if they cache data.
    @Override
    public boolean isCached() {
        return .isCached();
    }

    
Default implementation returns false. Subclasses should override this if they cache data in main memory.
    @Override
    public boolean isCachedMemory() {
        return .isCachedMemory();
    }
    @Override
    public boolean isCachedFile() {
        return .isCachedFile();
    }
    @Override
    public long length() {
            return ;
    }
    @Override
    public void write(int bthrows IOException {
        .write(b);
         = Math.max(.getStreamPosition()-,);
    }
    @Override
    public void write(byte[] bint offint lenthrows IOException {
        .write(b,off,len);
         = Math.max(.getStreamPosition()-,);
    }
    
    public void dispose() throws IOException {
        if () {
        checkClosed();
        }
        =null;
    }
New to GrepCode? Check out our FAQ X