package jxl.biff.drawing;

import common.Logger;

abstract class EscherRecord {
  private static Logger logger = Logger.getLogger(EscherRecord.class);
  
  protected EscherRecordData data;
  
  protected static final int HEADER_LENGTH = 8;
  
  protected EscherRecord(EscherRecordData erd) {
    this.data = erd;
  }
  
  protected EscherRecord(EscherRecordType type) {
    this.data = new EscherRecordData(type);
  }
  
  protected void setContainer(boolean cont) {
    this.data.setContainer(cont);
  }
  
  public int getLength() {
    return this.data.getLength() + 8;
  }
  
  protected final EscherStream getEscherStream() {
    return this.data.getEscherStream();
  }
  
  protected final int getPos() {
    return this.data.getPos();
  }
  
  protected final int getInstance() {
    return this.data.getInstance();
  }
  
  protected final void setInstance(int i) {
    this.data.setInstance(i);
  }
  
  protected final void setVersion(int v) {
    this.data.setVersion(v);
  }
  
  public EscherRecordType getType() {
    return this.data.getType();
  }
  
  final byte[] setHeaderData(byte[] d) {
    return this.data.setHeaderData(d);
  }
  
  byte[] getBytes() {
    return this.data.getBytes();
  }
  
  protected int getStreamLength() {
    return this.data.getStreamLength();
  }
  
  abstract byte[] getData();
}
