Class RMTextLayout

  • All Implemented Interfaces:
    RMArchiver.Archiving, java.lang.Cloneable

    public class RMTextLayout
    extends RMObject
    This class lays out characters in an RMXString inside a bounding rect.
    • Constructor Summary

      Constructors 
      Constructor Description
      RMTextLayout()  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      RMTextLine addLine()
      Adds an empty line to the layout.
      RMRect getBounds()
      Returns the text bounds for the text layout.
      int getCharForPoint​(float x, float y)
      Returns the character index for the given x/y point.
      static RMColor getColor​(java.util.Map attrs)
      Returns the color associated with the given attributes (or black by default).
      int getEnd()
      Returns the last character laid out.
      static RMFont getFont​(RMXString xString, int charPos)
      Returns the font associated with the attributes at the given character position for the given XString.
      static RMFont getFont​(java.util.Map attrs)
      Returns the font associated with the given attributes (Helvetica12 by default).
      static RMFont getFont​(java.util.Map attrs, float fontScale)
      Returns the font associated with the given attributes (Helvetica12 by default).
      float getHeight()
      Returns the height of the layout.
      float getHeightToFit()
      Returns height required to show all text.
      float getHitX​(float x, float y)
      Returns the x hit for the horizontal line from given point to positve infinity.
      RMTextLine getLine​(int anIndex)
      Returns the specific text line at the given index.
      int getLineCount()
      Returns the number of lines in the layout.
      RMTextLine getLineForChar​(int index)
      Returns the line for the given character index.
      RMTextLine getLineForChar​(int index, RMPoint suggestedPoint)
      Returns the line for the given character index, with an optional point as a hint.
      RMTextLine getLineForPointY​(float y)
      Returns the line index for the given y value.
      float getLineHeightForChar​(int index)
      Returns the height of the line at the given character index.
      float getLineHeightForChars​(int start, int end)
      Returns the height of the line for the given range of characters.
      int getLineIndexForChar​(int index)
      Returns the line index for the given character index.
      int getLineIndexForChar​(int index, RMPoint suggestedPoint)
      Returns the line index for the given character index, with an optional point as a hint.
      RMTextLine getLineLast()
      Returns the last text line.
      float getLineYForChar​(int pos)
      Returns the top of the line for the given character index.
      boolean getLongWordFound()
      Returns whether a word was found that over-ran a whole line by itself.
      float getMaxX()
      Returns the max x of the layout.
      float getMaxY()
      Returns the max y of the layout.
      RMTextFrag getNextFrag()
      Returns the next frag in the layout (use this to iterate until it returns null).
      static RMXString.Outline getOutline​(java.util.Map attrs)
      Returns the Outline record for the given attributes map (or null for none).
      static RMParagraph getParagraph​(java.util.Map attrs)
      Returns the paragraph from the given attributes map.
      RMPath getPath()
      Returns the path that the text should wrap to.
      RMPoint getPointForChar​(int index)
      Returns the text origin for the given character index.
      RMPoint getPointForChar​(int index, RMPoint suggestedPoint)
      Returns the text origin for the given character index.
      static int getScripting​(java.util.Map attrs)
      Returns the "scripting" of the given attributes map (1==super, -1==sub, 0==none).
      int getStart()
      Returns the starting character index.
      static RMTextLayout getThreadInstance()
      Returns the RMTextLayout shared by the current thread.
      static int getUnderlineStyle​(java.util.Map attrs)
      Returns the underline style of the given attributes map.
      float getWidth()
      Returns the width of the layout.
      float getWidthToFit()
      Returns the width required to show text without wrapping.
      float getX()
      Returns the x position of the layout.
      RMXString getXString()
      Returns the XString to be layed out.
      float getY()
      Returns the y position of the layout.
      boolean isAllTextVisible()
      Returns whether all text was rendered within text bounds or path.
      static boolean isUnderlined​(java.util.Map attrs)
      Returns whether the attributes map contains an underline attribute.
      int length()
      Returns the length of the chars that the layout is working with.
      void linesRemoveAll()
      Removes all lines from the layout.
      void linesRemoveLast()
      Removes the last line from the layout.
      void performLayout()
      Re-lays out text for current string and attributes (if necessary).
      void rebuild()
      Rebuilds the lines and frags of the layout (defers until needed).
      void setAlignVertical​(int anAlign)
      Sets the vertical alignment of text.
      void setBounds​(RMRect aRect)
      Sets the text bounds for the text layout.
      void setDrawFinalEmptyLine​(boolean aFlag)
      Sets whether the layout should include the last line even if it's just a newline.
      void setFontScale​(float aValue)
      Sets the font scale of the text layout.
      void setGrowHorizontal​(boolean aFlag)
      Sets whether text can grow horizontally.
      void setGrowVertical​(boolean aFlag)
      Sets whether text can grow vertically.
      void setPath​(RMPath aPath)
      Sets the path that the text should wrap to.
      void setStartIndex​(int anIndex)
      Sets the starting character index.
      void setXString​(RMXString aString)
      Sets the XString to be layed out.
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • RMTextLayout

        public RMTextLayout()
    • Method Detail

      • getThreadInstance

        public static RMTextLayout getThreadInstance()
        Returns the RMTextLayout shared by the current thread.
      • getXString

        public RMXString getXString()
        Returns the XString to be layed out.
      • setXString

        public void setXString​(RMXString aString)
        Sets the XString to be layed out.
      • getX

        public float getX()
        Returns the x position of the layout.
      • getY

        public float getY()
        Returns the y position of the layout.
      • getWidth

        public float getWidth()
        Returns the width of the layout.
      • getHeight

        public float getHeight()
        Returns the height of the layout.
      • getMaxX

        public float getMaxX()
        Returns the max x of the layout.
      • getMaxY

        public float getMaxY()
        Returns the max y of the layout.
      • getBounds

        public RMRect getBounds()
        Returns the text bounds for the text layout.
      • setBounds

        public void setBounds​(RMRect aRect)
        Sets the text bounds for the text layout.
      • getWidthToFit

        public float getWidthToFit()
        Returns the width required to show text without wrapping.
      • getHeightToFit

        public float getHeightToFit()
        Returns height required to show all text.
      • getPath

        public RMPath getPath()
        Returns the path that the text should wrap to.
      • setPath

        public void setPath​(RMPath aPath)
        Sets the path that the text should wrap to.
      • setGrowVertical

        public void setGrowVertical​(boolean aFlag)
        Sets whether text can grow vertically.
      • setGrowHorizontal

        public void setGrowHorizontal​(boolean aFlag)
        Sets whether text can grow horizontally.
      • setAlignVertical

        public void setAlignVertical​(int anAlign)
        Sets the vertical alignment of text.
      • setDrawFinalEmptyLine

        public void setDrawFinalEmptyLine​(boolean aFlag)
        Sets whether the layout should include the last line even if it's just a newline.
      • setFontScale

        public void setFontScale​(float aValue)
        Sets the font scale of the text layout.
      • length

        public int length()
        Returns the length of the chars that the layout is working with.
      • getStart

        public int getStart()
        Returns the starting character index.
      • setStartIndex

        public void setStartIndex​(int anIndex)
        Sets the starting character index.
      • getEnd

        public int getEnd()
        Returns the last character laid out.
      • isAllTextVisible

        public boolean isAllTextVisible()
        Returns whether all text was rendered within text bounds or path.
      • rebuild

        public void rebuild()
        Rebuilds the lines and frags of the layout (defers until needed).
      • performLayout

        public void performLayout()
        Re-lays out text for current string and attributes (if necessary). Called before enumerating frags.
      • getNextFrag

        public RMTextFrag getNextFrag()
        Returns the next frag in the layout (use this to iterate until it returns null).
      • getLineCount

        public int getLineCount()
        Returns the number of lines in the layout.
      • getLine

        public RMTextLine getLine​(int anIndex)
        Returns the specific text line at the given index.
      • getLineLast

        public RMTextLine getLineLast()
        Returns the last text line.
      • addLine

        public RMTextLine addLine()
        Adds an empty line to the layout.
      • linesRemoveAll

        public void linesRemoveAll()
        Removes all lines from the layout.
      • linesRemoveLast

        public void linesRemoveLast()
        Removes the last line from the layout.
      • getLineForChar

        public RMTextLine getLineForChar​(int index)
        Returns the line for the given character index.
      • getLineForChar

        public RMTextLine getLineForChar​(int index,
                                         RMPoint suggestedPoint)
        Returns the line for the given character index, with an optional point as a hint.
      • getLineForPointY

        public RMTextLine getLineForPointY​(float y)
        Returns the line index for the given y value.
      • getLineIndexForChar

        public int getLineIndexForChar​(int index)
        Returns the line index for the given character index.
      • getLineIndexForChar

        public int getLineIndexForChar​(int index,
                                       RMPoint suggestedPoint)
        Returns the line index for the given character index, with an optional point as a hint.
      • getPointForChar

        public RMPoint getPointForChar​(int index)
        Returns the text origin for the given character index.
      • getPointForChar

        public RMPoint getPointForChar​(int index,
                                       RMPoint suggestedPoint)
        Returns the text origin for the given character index.
      • getCharForPoint

        public int getCharForPoint​(float x,
                                   float y)
        Returns the character index for the given x/y point.
      • getLineHeightForChar

        public float getLineHeightForChar​(int index)
        Returns the height of the line at the given character index.
      • getLineHeightForChars

        public float getLineHeightForChars​(int start,
                                           int end)
        Returns the height of the line for the given range of characters.
      • getLineYForChar

        public float getLineYForChar​(int pos)
        Returns the top of the line for the given character index.
      • getHitX

        public float getHitX​(float x,
                             float y)
        Returns the x hit for the horizontal line from given point to positve infinity.
      • getLongWordFound

        public boolean getLongWordFound()
        Returns whether a word was found that over-ran a whole line by itself.
      • getColor

        public static RMColor getColor​(java.util.Map attrs)
        Returns the color associated with the given attributes (or black by default).
      • getFont

        public static RMFont getFont​(java.util.Map attrs)
        Returns the font associated with the given attributes (Helvetica12 by default).
      • getFont

        public static RMFont getFont​(java.util.Map attrs,
                                     float fontScale)
        Returns the font associated with the given attributes (Helvetica12 by default).
      • getFont

        public static RMFont getFont​(RMXString xString,
                                     int charPos)
        Returns the font associated with the attributes at the given character position for the given XString.
      • getParagraph

        public static RMParagraph getParagraph​(java.util.Map attrs)
        Returns the paragraph from the given attributes map.
      • isUnderlined

        public static boolean isUnderlined​(java.util.Map attrs)
        Returns whether the attributes map contains an underline attribute.
      • getUnderlineStyle

        public static int getUnderlineStyle​(java.util.Map attrs)
        Returns the underline style of the given attributes map.
      • getOutline

        public static RMXString.Outline getOutline​(java.util.Map attrs)
        Returns the Outline record for the given attributes map (or null for none).
      • getScripting

        public static int getScripting​(java.util.Map attrs)
        Returns the "scripting" of the given attributes map (1==super, -1==sub, 0==none).