# Class TextSelection.Span

java.lang.Object
com.codename1.ui.TextSelection.Span

All Implemented Interfaces:
  `Iterable<TextSelection.Char>`

Enclosing class:
  `TextSelection`

public class TextSelection.Span extends Object implements Iterable<TextSelection.Char>
Encapsulates a span of text on the screen. This can only represent a contiguous, single row of characters.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Span(Component c)`
  Creates a new span for the given component.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `add(TextSelection.Char character)`
  Adds a character to the span, updating the bounds.
  `TextSelection.Char`
  `charAt(int x, int y)`
  Gets the char at the given coordinate or null if there isn't a char there.
  `TextSelection.Char`
  `first()`
  Gets the first Char in the span, or null if span is empty.
  `Rectangle`
  `getBounds()`
  Gets the bounds of the span.
  `int`
  `getEndPos()`
  Gets th end position of the text.
  `TextSelection.Span`
  `getIntersection(int x, int y, int w, int h)`
  Obtains an intersection span including only the characters that intersect the given rectangle.
  `TextSelection.Span`
  `getIntersection(int x, int y, int w, int h, boolean withFlow)`
  Obtains an intersection span including only the characters that intersect the given rectangle.
  `TextSelection.Span`
  `getIntersection(Rectangle bounds)`
  Obtains an intersection span including only the characters that intersect the given rectangle.
  `TextSelection.Span`
  `getIntersection(Rectangle bounds, boolean withFlow)`
  Obtains an intersection span including only the characters that intersect the given rectangle.
  `int`
  `getStartPos()`
  Gets the start position of the text.
  `boolean`
  `isEmpty()`
  Returns true if the span is empty.
  `Iterator<TextSelection.Char>`
  `iterator()`
  Returns an `Iterator` for the elements in this object.
  `TextSelection.Char`
  `last()`
  Gets the last Char in the span, or null if the span is empty.
  `int`
  `size()`
  Gets the number of Chars in the span.
  `TextSelection.Span`
  `subspan(int start, int end)`
  Gets a subspan containing the Chars between start (inclusive), and end (exclusive).
  `String`
  `toString()`
  Returns a string representation of the object.
  `TextSelection.Span`
  `translate(int tx, int ty)`
  Creates a translated span based on this one.

  ### Methods inherited from class Object

  `clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### Span

    public Span(Component c)

    Creates a new span for the given component.

    ###### Parameters

    - `c`

- ## Method Details

  - ### getStartPos

    public int getStartPos()
    Gets the start position of the text.

  - ### getEndPos

    public int getEndPos()
    Gets th end position of the text. (exclusive).

  - ### iterator

    public Iterator<TextSelection.Char> iterator()
    Description copied from interface: `Iterable`

    Returns an `Iterator` for the elements in this object.

    ###### Returns

    An `Iterator` instance.

    Specified by:
      `iterator` in interface `Iterable<TextSelection.Char>`

  - ### toString

    public String toString()
    Description copied from class: `Object`
    Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method. The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of: getClass().getName() + '@' + Integer.toHexString(hashCode())
    Overrides:
      `toString` in class `Object`

  - ### add

    public void add(TextSelection.Char character)

    Adds a character to the span, updating the bounds.

    ###### Parameters

    - `character`

  - ### getIntersection

    public TextSelection.Span getIntersection(int x, int y, int w, int h)

    Obtains an intersection span including only the characters that intersect the given rectangle.

    ###### Parameters

    - `x`: The x-coord of the intersection box, relative to `#getSelectionRoot()`

    - `y`: The y-coord of the intersection box to `#getSelectionRoot()`

    - `w`: The width of the intersection box.

    - `h`: The height of the intersection box.

    ###### Returns

    A new span containing only characters that intersect the given bounds.

  - ### getIntersection

    public TextSelection.Span getIntersection(int x, int y, int w, int h, boolean withFlow)

    Obtains an intersection span including only the characters that intersect the given rectangle.

    ###### Parameters

    - `x`: The x-coord of the intersection box, relative to `#getSelectionRoot()`

    - `y`: The y-coord of the intersection box to `#getSelectionRoot()`

    - `w`: The width of the intersection box.

    - `h`: The height of the intersection box.

    - `withFlow`: @param withFlow If true, this will also include any characters that should logically be selected if the user dragged over the given rectangle. E.g. If the selection began above the span, and stretches below it, the entire span should be selected (included in the intersection).

    ###### Returns

    A new span with the intersection.

  - ### getIntersection

    public TextSelection.Span getIntersection(Rectangle bounds, boolean withFlow)

    Obtains an intersection span including only the characters that intersect the given rectangle.

    ###### Parameters

    - `bounds`: The bounds of the intersection box, relative to `#getSelectionRoot()`

    - `withFlow`: @param withFlow If true, this will also include any characters that should logically be selected if the user dragged over the given rectangle. E.g. If the selection began above the span, and stretches below it, the entire span should be selected (included in the intersection).

    ###### Returns

    A new span with the intersection.

  - ### getIntersection

    public TextSelection.Span getIntersection(Rectangle bounds)

    Obtains an intersection span including only the characters that intersect the given rectangle.

    ###### Parameters

    - `bounds`: The bounds of the intersection box, relative to `#getSelectionRoot()`

    ###### Returns

    A new span with the intersection.

  - ### charAt

    public TextSelection.Char charAt(int x, int y)

    Gets the char at the given coordinate or null if there isn't a char there.

    ###### Parameters

    - `x`: x-coordinate relative to `#getSelectionRoot()`

    - `y`: y-coordinate relative to `#getSelectionRoot()`

  - ### first

    public TextSelection.Char first()

    Gets the first Char in the span, or null if span is empty.

    ###### Returns

    The first Char, or null.

  - ### last

    public TextSelection.Char last()

    Gets the last Char in the span, or null if the span is empty.

    ###### Returns

    The last Char or null.

  - ### size

    public int size()
    Gets the number of Chars in the span.

  - ### subspan

    public TextSelection.Span subspan(int start, int end)

    Gets a subspan containing the Chars between start (inclusive), and end (exclusive).

    ###### Parameters

    - `start`: The start position of the Char to retrieve.

    - `end`: The end position of the Char to retrieve.

    ###### Returns

    A new span including only the Chars at the given positions.

  - ### getBounds

    public Rectangle getBounds()

    Gets the bounds of the span.

    ###### Returns

    the bounds

  - ### translate

    public TextSelection.Span translate(int tx, int ty)

    Creates a translated span based on this one.

    ###### Parameters

    - `tx`: x translation in pixels.

    - `ty`: y translation in pixels.

    ###### Returns

    A new span translated.

  - ### isEmpty

    public boolean isEmpty()
    Returns true if the span is empty.