Package icyllis.modernui.text

# Class StaticLayout

java.lang.Object
icyllis.modernui.text.Layout
icyllis.modernui.text.StaticLayout

public class StaticLayout extends Layout
StaticLayout is a Layout for text that will not be edited after it is laid out. Use `DynamicLayout` for text that may change.

This is used by widgets to control text layout. You should not need to use this class directly unless you are implementing your own widget or custom display object.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static final class`
  `StaticLayout.Builder`
  Builder for static layouts.

  ## Nested classes/interfaces inherited from class icyllis.modernui.text.Layout

  `Layout.Alignment`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final org.apache.logging.log4j.Marker`
  `MARKER`

  ### Fields inherited from class icyllis.modernui.text.Layout

  `DIR_LEFT_TO_RIGHT, DIR_RIGHT_TO_LEFT, TAB_INCREMENT`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static StaticLayout.Builder`
  `builder(CharSequence source, int start, int end, TextPaint paint, int width)`
  Obtain a builder for constructing StaticLayout objects.
  `int`
  `getBottomPadding()`
  Returns the number of extra pixels of descent padding in the bottom line of the Layout.
  `int`
  `getEllipsisCount(int line)`
  Returns the number of characters to be ellipsized away, or 0 if no ellipsis is to take place.
  `int`
  `getEllipsisStart(int line)`
  Return the offset of the first character to be ellipsized away, relative to the start of the line.
  `int`
  `getEllipsizedWidth()`
  Return the width to which this Layout is ellipsizing, or `Layout.getWidth()` if it is not doing anything special.
  `int`
  `getHeight(boolean cap)`
  Return the total height of this layout.
  `int`
  `getIndentAdjust(int line, Layout.Alignment align)`
  Returns the left indent for a line.
  `boolean`
  `getLineContainsTab(int line)`
  Returns whether the specified line contains one or more characters that need to be handled specially, like tabs.
  `int`
  `getLineCount()`
  Return the number of lines of text in this layout.
  `int`
  `getLineDescent(int line)`
  Return the descent of the specified line(0…getLineCount() - 1).
  `final Directions`
  `getLineDirections(int line)`
  Returns the directional run information for the specified line.
  `int`
  `getLineForVertical(int vertical)`
  Get the line number corresponding to the specified vertical position.
  `int`
  `getLineStart(int line)`
  Return the text offset of the beginning of the specified line ( 0…getLineCount()).
  `int`
  `getLineTop(int line)`
  Return the vertical position of the top of the specified line (0…getLineCount()).
  `int`
  `getParagraphDirection(int line)`
  Returns the primary directionality of the paragraph containing the specified line, either 1 for left-to-right lines, or -1 for right-to-left lines (see `Layout.DIR_LEFT_TO_RIGHT`, `Layout.DIR_RIGHT_TO_LEFT`).
  `int`
  `getTopPadding()`
  Returns the (negative) number of extra pixels of ascent padding in the top line of the Layout.

  ### Methods inherited from class icyllis.modernui.text.Layout

  `draw, drawBackground, drawText, getAlignment, getCursorPath, getDesiredWidth, getDesiredWidth, getDesiredWidth, getDesiredWidthWithLimit, getHeight, getLineAscent, getLineBaseline, getLineBottom, getLineBounds, getLineEnd, getLineForOffset, getLineLeft, getLineMax, getLineRangeForDraw, getLineRight, getLineVisibleEnd, getLineWidth, getOffsetForHorizontal, getOffsetForHorizontal, getOffsetToLeftOf, getOffsetToRightOf, getPaint, getParagraphAlignment, getParagraphLeft, getParagraphRight, getPrimaryHorizontal, getPrimaryHorizontal, getSecondaryHorizontal, getSecondaryHorizontal, getSelectionPath, getText, getTextDirectionHeuristic, getWidth, increaseWidthTo, isLevelBoundary, isRtlCharAt, primaryIsTrailingPrevious, primaryIsTrailingPreviousAllLineOffsets`

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

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

- ## Field Details

  - ### MARKER

    public static final org.apache.logging.log4j.Marker MARKER

- ## Method Details

  - ### builder

    @NonNull public static StaticLayout.Builder builder(@NonNull CharSequence source, @IntRange(from=0L) int start, @IntRange(from=0L) int end, @NonNull TextPaint paint, @IntRange(from=0L) int width)
    Obtain a builder for constructing StaticLayout objects.
    Parameters:
      `source` - The text to be laid out, optionally with spans
      `start` - The start index (inclusive) of the text
      `end` - The end index (exclusive) of the text
      `paint` - The base (default) paint used for layout
      `width` - The width in pixels for each line
    Returns:
      a builder object used for constructing the StaticLayout

  - ### getLineForVertical

    public int getLineForVertical(int vertical)
    Description copied from class: `Layout`
    Get the line number corresponding to the specified vertical position. If you ask for a position above 0, you get 0; if you ask for a position below the bottom of the text, you get the last line.
    Overrides:
      `getLineForVertical` in class `Layout`

  - ### getLineCount

    public int getLineCount()
    Description copied from class: `Layout`
    Return the number of lines of text in this layout.
    Specified by:
      `getLineCount` in class `Layout`

  - ### getLineTop

    public int getLineTop(int line)
    Description copied from class: `Layout`
    Return the vertical position of the top of the specified line (0…getLineCount()). If the specified line is equal to the line count, returns the bottom of the last line.
    Specified by:
      `getLineTop` in class `Layout`

  - ### getLineDescent

    public int getLineDescent(int line)
    Description copied from class: `Layout`
    Return the descent of the specified line(0…getLineCount() - 1).
    Specified by:
      `getLineDescent` in class `Layout`

  - ### getLineStart

    public int getLineStart(int line)
    Description copied from class: `Layout`
    Return the text offset of the beginning of the specified line ( 0…getLineCount()). If the specified line is equal to the line count, returns the length of the text.
    Specified by:
      `getLineStart` in class `Layout`

  - ### getParagraphDirection

    public int getParagraphDirection(int line)
    Description copied from class: `Layout`
    Returns the primary directionality of the paragraph containing the specified line, either 1 for left-to-right lines, or -1 for right-to-left lines (see `Layout.DIR_LEFT_TO_RIGHT`, `Layout.DIR_RIGHT_TO_LEFT`).
    Specified by:
      `getParagraphDirection` in class `Layout`

  - ### getLineContainsTab

    public boolean getLineContainsTab(int line)
    Description copied from class: `Layout`
    Returns whether the specified line contains one or more characters that need to be handled specially, like tabs.
    Specified by:
      `getLineContainsTab` in class `Layout`

  - ### getLineDirections

    public final Directions getLineDirections(int line)
    Description copied from class: `Layout`
    Returns the directional run information for the specified line. The array alternates counts of characters in left-to-right and right-to-left segments of the line.

    NOTE: this is inadequate to support bidirectional text, and will change.

    Specified by:
      `getLineDirections` in class `Layout`

  - ### getTopPadding

    public int getTopPadding()
    Description copied from class: `Layout`
    Returns the (negative) number of extra pixels of ascent padding in the top line of the Layout.
    Specified by:
      `getTopPadding` in class `Layout`

  - ### getBottomPadding

    public int getBottomPadding()
    Description copied from class: `Layout`
    Returns the number of extra pixels of descent padding in the bottom line of the Layout.
    Specified by:
      `getBottomPadding` in class `Layout`

  - ### getIndentAdjust

    public int getIndentAdjust(int line, Layout.Alignment align)
    Description copied from class: `Layout`
    Returns the left indent for a line.
    Overrides:
      `getIndentAdjust` in class `Layout`

  - ### getEllipsisCount

    public int getEllipsisCount(int line)
    Description copied from class: `Layout`
    Returns the number of characters to be ellipsized away, or 0 if no ellipsis is to take place.
    Specified by:
      `getEllipsisCount` in class `Layout`

  - ### getEllipsisStart

    public int getEllipsisStart(int line)
    Description copied from class: `Layout`
    Return the offset of the first character to be ellipsized away, relative to the start of the line. (So 0 if the beginning of the line is ellipsized, not getLineStart().)
    Specified by:
      `getEllipsisStart` in class `Layout`

  - ### getEllipsizedWidth

    public int getEllipsizedWidth()
    Description copied from class: `Layout`
    Return the width to which this Layout is ellipsizing, or `Layout.getWidth()` if it is not doing anything special.
    Overrides:
      `getEllipsizedWidth` in class `Layout`

  - ### getHeight

    public int getHeight(boolean cap)
    Return the total height of this layout.
    Overrides:
      `getHeight` in class `Layout`
    Parameters:
      `cap` - if true and max lines is set, returns the height of the layout at the max lines.