org.apache.poi.hwpf.model

## Class TextPieceTable

- java.lang.Object
- - org.apache.poi.hwpf.model.TextPieceTable

- All Implemented Interfaces:
    CharIndexTranslator
  Direct Known Subclasses:
    OldTextPieceTable

      @Internal
      public class TextPieceTable
      extends java.lang.Object
      implements CharIndexTranslator

  The piece table for matching up character positions to bits of text. This mostly works in bytes, but the TextPieces themselves work in characters. This does the icky convertion.
  Author:
    Ryan Ackley

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `protected static class` | `TextPieceTable.FCComparator`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected java.util.ArrayList<TextPiece>` | `_textPieces`
    `protected java.util.ArrayList<TextPiece>` | `_textPiecesFCOrder`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TextPieceTable()`
    `TextPieceTable(byte[] documentStream, byte[] tableStream, int offset, int size, int fcMin)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `add(TextPiece piece)`
    `int` | `adjustForInsert(int listIndex, int length)` Adjust all the text piece after inserting some text into one of them
    `boolean` | `equals(java.lang.Object o)`
    `int` | `getByteIndex(int charPos)` Calculates the byte index of the given char index.
    `int` | `getCharIndex(int bytePos)` Deprecated.
    `int` | `getCharIndex(int startBytePos, int startCP)` Deprecated.
    `int[][]` | `getCharIndexRanges(int startBytePosInclusive, int endBytePosExclusive)` Finds character ranges that includes specified byte range.
    `int` | `getCpMin()`
    `protected int` | `getEncodingMultiplier(TextPiece textPiece)`
    `java.lang.StringBuilder` | `getText()`
    `java.util.List<TextPiece>` | `getTextPieces()`
    `int` | `hashCode()`
    `boolean` | `isIndexInTable(int bytePos)` Check if index is in table
    `int` | `lookIndexBackward(int startBytePos)` Return last index <= bytePos that is in table
    `int` | `lookIndexForward(int startBytePos)` Return first index >= bytePos that is in table
    `protected TextPiece` | `newTextPiece(int nodeStartChars, int nodeEndChars, byte[] buf, PieceDescriptor pd)`
    `byte[]` | `writeTo(java.io.ByteArrayOutputStream docStream)`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### _textPieces

          protected java.util.ArrayList<TextPiece> _textPieces

    - #### _textPiecesFCOrder

          protected java.util.ArrayList<TextPiece> _textPiecesFCOrder

  - ### Constructor Detail

    - #### TextPieceTable

          public TextPieceTable()

    - #### TextPieceTable

          public TextPieceTable(byte[] documentStream,
                                byte[] tableStream,
                                int offset,
                                int size,
                                int fcMin)

  - ### Method Detail

    - #### newTextPiece

          protected TextPiece newTextPiece(int nodeStartChars,
                                           int nodeEndChars,
                                           byte[] buf,
                                           PieceDescriptor pd)

    - #### add

          public void add(TextPiece piece)

    - #### adjustForInsert

          public int adjustForInsert(int listIndex,
                                     int length)

      Adjust all the text piece after inserting some text into one of them
      Parameters:
        `listIndex` - The TextPiece that had characters inserted into
        `length` - The number of characters inserted

    - #### equals

          public boolean equals(java.lang.Object o)

      Overrides:
        `equals` in class `java.lang.Object`

    - #### getByteIndex

          public int getByteIndex(int charPos)

      Description copied from interface: `CharIndexTranslator`
      Calculates the byte index of the given char index.
      Specified by:
        `getByteIndex` in interface `CharIndexTranslator`
      Parameters:
        `charPos` - The char position
      Returns:
        The byte index

    - #### getCharIndex

          @Deprecated
          public int getCharIndex(int bytePos)

      Deprecated.

    - #### getCharIndex

          @Deprecated
          public int getCharIndex(int startBytePos,
                                              int startCP)

      Deprecated.

    - #### getCharIndexRanges

          public int[][] getCharIndexRanges(int startBytePosInclusive,
                                            int endBytePosExclusive)

      Description copied from interface: `CharIndexTranslator`
      Finds character ranges that includes specified byte range.
      Specified by:
        `getCharIndexRanges` in interface `CharIndexTranslator`
      Parameters:
        `startBytePosInclusive` - start byte range
        `endBytePosExclusive` - end byte range

    - #### getEncodingMultiplier

          protected int getEncodingMultiplier(TextPiece textPiece)

    - #### getCpMin

          public int getCpMin()

    - #### getText

          public java.lang.StringBuilder getText()

    - #### getTextPieces

          public java.util.List<TextPiece> getTextPieces()

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### isIndexInTable

          public boolean isIndexInTable(int bytePos)

      Description copied from interface: `CharIndexTranslator`
      Check if index is in table
      Specified by:
        `isIndexInTable` in interface `CharIndexTranslator`
      Returns:
        true if index in table, false if not

    - #### lookIndexBackward

          public int lookIndexBackward(int startBytePos)

      Description copied from interface: `CharIndexTranslator`
      Return last index <= bytePos that is in table
      Specified by:
        `lookIndexBackward` in interface `CharIndexTranslator`
      Returns:
        last index less of equal to bytePos that is in table

    - #### lookIndexForward

          public int lookIndexForward(int startBytePos)

      Description copied from interface: `CharIndexTranslator`
      Return first index >= bytePos that is in table
      Specified by:
        `lookIndexForward` in interface `CharIndexTranslator`
      Returns:
        first index greater or equal to bytePos that is in table

    - #### writeTo

          public byte[] writeTo(java.io.ByteArrayOutputStream docStream)
                         throws java.io.IOException

      Throws:
        `java.io.IOException`

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.