Package loci.poi.ddf

Class EscherArrayProperty


public class EscherArrayProperty extends EscherComplexProperty
Escher array properties are the most wierd construction ever invented with all sorts of special cases. I'm hopeful I've got them all.
Author:
Glen Stampoultzis (glens at superlinksoftware.com)
  • Constructor Details

    • EscherArrayProperty

      public EscherArrayProperty(short id, byte[] complexData)
    • EscherArrayProperty

      public EscherArrayProperty(short propertyNumber, boolean isBlipId, byte[] complexData)
  • Method Details

    • getNumberOfElementsInArray

      public int getNumberOfElementsInArray()
    • setNumberOfElementsInArray

      public void setNumberOfElementsInArray(int numberOfElements)
    • getNumberOfElementsInMemory

      public int getNumberOfElementsInMemory()
    • setNumberOfElementsInMemory

      public void setNumberOfElementsInMemory(int numberOfElements)
    • getSizeOfElements

      public short getSizeOfElements()
    • setSizeOfElements

      public void setSizeOfElements(int sizeOfElements)
    • getElement

      public byte[] getElement(int index)
    • setElement

      public void setElement(int index, byte[] element)
    • toString

      public String toString()
      Description copied from class: EscherComplexProperty
      Retrieves the string representation for this property.
      Overrides:
      toString in class EscherComplexProperty
    • setArrayData

      public int setArrayData(byte[] data, int offset)
      We have this method because the way in which arrays in escher works is screwed for seemly arbitary reasons. While most properties are fairly consistent and have a predictable array size, escher arrays have special cases.
      Parameters:
      data - The data array containing the escher array information
      offset - The offset into the array to start reading from.
      Returns:
      the number of bytes used by this complex property.
    • serializeSimplePart

      public int serializeSimplePart(byte[] data, int pos)
      Serializes the simple part of this property. ie the first 6 bytes. Needs special code to handle the case when the size doesn't include the size of the header block
      Overrides:
      serializeSimplePart in class EscherComplexProperty
    • getActualSizeOfElements

      public static int getActualSizeOfElements(short sizeOfElements)
      Sometimes the element size is stored as a negative number. We negate it and shift it to get the real value.