Class RMTextLayout

  • All Implemented Interfaces:
    RMTypes, RMTextTypes, java.awt.Shape, java.io.Serializable, java.lang.CharSequence, java.lang.Cloneable
    Direct Known Subclasses:
    RMTextLayoutInPath

    public class RMTextLayout
    extends java.awt.geom.Rectangle2D.Double
    implements java.lang.CharSequence, RMTextTypes
    A class to layout text.
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class java.awt.geom.Rectangle2D

        java.awt.geom.Rectangle2D.Double, java.awt.geom.Rectangle2D.Float
    • Constructor Summary

      Constructors 
      Constructor Description
      RMTextLayout()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected void addChar​(char aChar)
      Adds a char to the layout.
      int addChars​(RMXStringRun aRun, int aStart, int anEnd)
      Adds chars to text layout.
      RMTextLine addLine​(RMXStringRun aRun)
      Adds a new line and returns it.
      RMTextRun addRun​(RMXStringRun aRun, RMTextLine aLine)
      Adds a new run.
      char charAt​(int anIndex)
      Returns the char value at the specified index.
      protected RMTextLine createLine()
      Creates a new text line.
      RMTextRun createRun()
      Creates a new run.
      void deleteChars​(int anIndex)
      Deletes chars from index.
      RMTypes.AlignY getAlignmentY()
      Returns the vertical alignment of this layout.
      int getCharIndex​(double anX, double aY)
      Returns the character index for the given x/y point.
      int getCharIndex​(java.awt.geom.Point2D aPoint)
      Returns the character index for the given x/y point.
      int getEnd()
      Returns the end char index of the layout in XString.
      double getFontScale()
      Returns the font scale of the text layout.
      double getHeightToFit()
      Returns the height to fit.
      double getIndent​(RMXStringRun aRun)
      Returns the indent for this line.
      RMTextLine getLine()
      Returns the head line of line linked list.
      RMTextLine getLine​(int anIndex)
      Returns the individual line at given index.
      int getLineCount()
      Returns the number of lines.
      RMTextLine getLineForChar​(int anIndex)
      Returns the line for the given character index.
      RMTextLine getLineForPointY​(double aY)
      Returns the line for the given y value.
      RMTextLine getLineLast()
      Returns the last line.
      boolean getLongWordFound()
      Returns whether a word was found that over-ran a whole line by itself.
      boolean getNeedsLayout()
      Returns whether text needs to perform layout.
      java.awt.geom.Point2D getNextLineStartPoint​(RMXStringRun aRun)
      Returns what this line thinks is the next line's x.
      java.awt.geom.GeneralPath getPathForChars​(int aStart, int anEnd)
      Returns a path for two char indexes - it will be a a simple box with extensions for first/last lines.
      java.awt.geom.Point2D getPointForChar​(int anIndex)
      Returns the text origin for the given character index.
      boolean getRanOutOfRoom()
      Returns whether layout ran out of room trying to render chars.
      RMTextRun getRun()
      Returns the head run in linked list of runs for the layout.
      RMTextRun getRun​(int anIndex)
      Returns the text run at the given index.
      int getRunCount()
      Returns the number of runs in this line.
      RMTextRun getRunForPoint​(double anX, double aY)
      Returns the run for given x/y.
      RMTextRun getRunLast()
      Returns the last run.
      int getStart()
      Returns the start char index of the layout in XString.
      boolean getUseFractionalMetrics()
      Returns whether to use fractional character metrics.
      double getWidthToFit()
      Returns the width to fit.
      boolean getWrapped()
      Returns whether layout had to wrap a line.
      RMXString getXString()
      Returns the RMXString.
      boolean isLocked()
      Returns whether text layout is full.
      void layout()
      Performs text layout if needed.
      protected void layoutText()
      Performs text layout.
      void layoutToFit()
      Scales font sizes of all text in an RMText shape to fit in bounds.
      int length()
      Returns the length of this text layout.
      protected void pathlineTo​(java.awt.geom.GeneralPath path, double x, double y)  
      protected void pathmoveTo​(java.awt.geom.GeneralPath path, double x, double y)  
      protected void performAlignmentY()
      Perform vertical alignment - this needs to move to RMTextShape!
      void removeLine()
      Removes a line.
      void setAlignHeight​(double aValue)
      Bogus!
      void setAlignmentY​(RMTypes.AlignY anAlignment)
      Sets the vertical alignment of this layout.
      void setFontScale​(double aValue)
      Sets the font scale of the text layout.
      void setLocked​(boolean aFlag)
      Sets whether text layout can add more characters.
      void setNeedsLayout​(boolean aValue)
      Sets whether text needs to perform layout.
      void setStart​(int aStart)
      Sets the start char index of the layout in XString.
      void setUseFractionalMetrics​(boolean aFlag)
      Sets whether to use fractional character metrics.
      void setXString​(RMXString anXString)
      Sets the RMXString.
      java.lang.CharSequence subSequence​(int aStart, int anEnd)
      Returns a new char sequence that is a sub-sequence of this sequence.
      java.lang.String toString()
      Standard toString implementation.
      • Methods inherited from class java.awt.geom.Rectangle2D.Double

        createIntersection, createUnion, getBounds2D, getHeight, getWidth, getX, getY, isEmpty, outcode, setRect, setRect
      • Methods inherited from class java.awt.geom.Rectangle2D

        add, add, add, contains, contains, equals, getPathIterator, getPathIterator, hashCode, intersect, intersects, intersectsLine, intersectsLine, outcode, setFrame, union
      • Methods inherited from class java.awt.geom.RectangularShape

        clone, contains, contains, getBounds, getCenterX, getCenterY, getFrame, getMaxX, getMaxY, getMinX, getMinY, intersects, setFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal
      • Methods inherited from class java.lang.Object

        finalize, getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.lang.CharSequence

        chars, codePoints
    • Constructor Detail

      • RMTextLayout

        public RMTextLayout()
    • Method Detail

      • getXString

        public RMXString getXString()
        Returns the RMXString.
      • setXString

        public void setXString​(RMXString anXString)
        Sets the RMXString.
      • getStart

        public int getStart()
        Returns the start char index of the layout in XString.
      • setStart

        public void setStart​(int aStart)
        Sets the start char index of the layout in XString.
      • getEnd

        public int getEnd()
        Returns the end char index of the layout in XString.
      • getNeedsLayout

        public boolean getNeedsLayout()
        Returns whether text needs to perform layout.
      • setNeedsLayout

        public void setNeedsLayout​(boolean aValue)
        Sets whether text needs to perform layout.
      • layout

        public void layout()
        Performs text layout if needed.
      • layoutText

        protected void layoutText()
        Performs text layout.
      • addChars

        public int addChars​(RMXStringRun aRun,
                            int aStart,
                            int anEnd)
        Adds chars to text layout.
      • addChar

        protected void addChar​(char aChar)
        Adds a char to the layout.
      • deleteChars

        public void deleteChars​(int anIndex)
        Deletes chars from index.
      • length

        public int length()
        Returns the length of this text layout.
        Specified by:
        length in interface java.lang.CharSequence
      • charAt

        public char charAt​(int anIndex)
        Returns the char value at the specified index.
        Specified by:
        charAt in interface java.lang.CharSequence
      • subSequence

        public java.lang.CharSequence subSequence​(int aStart,
                                                  int anEnd)
        Returns a new char sequence that is a sub-sequence of this sequence.
        Specified by:
        subSequence in interface java.lang.CharSequence
      • getFontScale

        public double getFontScale()
        Returns the font scale of the text layout.
      • setFontScale

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

        public boolean getUseFractionalMetrics()
        Returns whether to use fractional character metrics.
      • setUseFractionalMetrics

        public void setUseFractionalMetrics​(boolean aFlag)
        Sets whether to use fractional character metrics.
      • getAlignmentY

        public RMTypes.AlignY getAlignmentY()
        Returns the vertical alignment of this layout.
      • setAlignmentY

        public void setAlignmentY​(RMTypes.AlignY anAlignment)
        Sets the vertical alignment of this layout.
      • getWidthToFit

        public double getWidthToFit()
        Returns the width to fit.
      • getHeightToFit

        public double getHeightToFit()
        Returns the height to fit.
      • getLine

        public RMTextLine getLine()
        Returns the head line of line linked list.
      • getLineCount

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

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

        public RMTextLine getLineLast()
        Returns the last line.
      • createLine

        protected RMTextLine createLine()
        Creates a new text line.
      • removeLine

        public void removeLine()
        Removes a line.
      • getRun

        public RMTextRun getRun()
        Returns the head run in linked list of runs for the layout.
      • getRunCount

        public int getRunCount()
        Returns the number of runs in this line.
      • getRun

        public RMTextRun getRun​(int anIndex)
        Returns the text run at the given index.
      • getRunLast

        @Nullable
        public RMTextRun getRunLast()
        Returns the last run.
      • createRun

        public RMTextRun createRun()
        Creates a new run.
      • getCharIndex

        public int getCharIndex​(java.awt.geom.Point2D aPoint)
        Returns the character index for the given x/y point.
      • getCharIndex

        public int getCharIndex​(double anX,
                                double aY)
        Returns the character index for the given x/y point.
      • getPointForChar

        public java.awt.geom.Point2D getPointForChar​(int anIndex)
        Returns the text origin for the given character index.
      • getLineForChar

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

        public RMTextLine getLineForPointY​(double aY)
        Returns the line for the given y value.
      • getRunForPoint

        public RMTextRun getRunForPoint​(double anX,
                                        double aY)
        Returns the run for given x/y.
      • getNextLineStartPoint

        public java.awt.geom.Point2D getNextLineStartPoint​(RMXStringRun aRun)
        Returns what this line thinks is the next line's x. Override if not infinity.
      • getIndent

        public double getIndent​(RMXStringRun aRun)
        Returns the indent for this line.
      • getWrapped

        public boolean getWrapped()
        Returns whether layout had to wrap a line.
      • getLongWordFound

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

        public boolean getRanOutOfRoom()
        Returns whether layout ran out of room trying to render chars.
      • getPathForChars

        public java.awt.geom.GeneralPath getPathForChars​(int aStart,
                                                         int anEnd)
        Returns a path for two char indexes - it will be a a simple box with extensions for first/last lines.
      • pathmoveTo

        protected void pathmoveTo​(java.awt.geom.GeneralPath path,
                                  double x,
                                  double y)
      • pathlineTo

        protected void pathlineTo​(java.awt.geom.GeneralPath path,
                                  double x,
                                  double y)
      • isLocked

        public boolean isLocked()
        Returns whether text layout is full.
      • setLocked

        public void setLocked​(boolean aFlag)
        Sets whether text layout can add more characters.
      • performAlignmentY

        protected void performAlignmentY()
        Perform vertical alignment - this needs to move to RMTextShape!
      • setAlignHeight

        public void setAlignHeight​(double aValue)
        Bogus!
      • layoutToFit

        public void layoutToFit()
        Scales font sizes of all text in an RMText shape to fit in bounds. Caches font scale factor in xstring.
      • toString

        public java.lang.String toString()
        Standard toString implementation.
        Specified by:
        toString in interface java.lang.CharSequence
        Overrides:
        toString in class java.awt.geom.Rectangle2D.Double