Class RMText

  • All Implemented Interfaces:
    RMArchiver.Archiving, java.lang.Cloneable
    Direct Known Subclasses:
    RBText, RMCell, RMLinkedText

    public class RMText
    extends RMRectangle
    This class is an RMShape subclass for handling rich text. Text is probably the most common and useful element in a ReportMill template. You might use this class to programatically build or modify a template, like this:

       RMXString xstring = new RMXString("Hello world!", RMFont.getFont("Arial", 12), RMColor.red);
       RMText text = new RMText(xstring);
       template.getPage(0).addChild(text);
       text.setXY(36, 36);
       text.setSizeToFit();
     
    • Constructor Detail

      • RMText

        public RMText()
        Creates an empty text instance.
      • RMText

        public RMText​(RMXString string)
        Creates a text instance initialized with the given RMXString.
      • RMText

        public RMText​(java.lang.String plainText)
        Creates a text instance initialized with the given plain text String.
    • Method Detail

      • getXString

        public RMXString getXString()
        Returns the XString associated with this RMText.
      • setXString

        public void setXString​(RMXString s)
        Sets the XString associated with this RMText.
      • length

        public int length()
        Returns the length, in characters, of the XString associated with this RMText.
      • getText

        public java.lang.String getText()
        Returns the text associated with this RMText as a plain String.
      • setText

        public void setText​(java.lang.String aString)
        Replaces the current text associated with this RMText with the given String.
      • setText

        public void setText​(RMXString anXString)
        Sets the XString associated with this RMText.
      • getVisibleStart

        public int getVisibleStart()
        Returns the first character index visible in this text.
      • getVisibleEnd

        public int getVisibleEnd()
        Returns the last character index visible in this text.
      • isAllTextVisible

        public boolean isAllTextVisible()
        Returns whether all characters can be visibly rendered in text bounds.
      • getFont

        public RMFont getFont()
        Returns the font for char 0.
        Overrides:
        getFont in class RMShape
      • setFont

        public void setFont​(RMFont aFont)
        Sets the font for all characters.
        Overrides:
        setFont in class RMShape
      • setFormat

        public void setFormat​(RMFormat aFormat)
        Sets the format for all characters.
        Overrides:
        setFormat in class RMShape
      • getTextColor

        public RMColor getTextColor()
        Returns the color of the first character of the xstring associated with this RMText.
        Overrides:
        getTextColor in class RMShape
      • setTextColor

        public void setTextColor​(RMColor aColor)
        Sets the color of the characters in the XString associated with this RMText.
        Overrides:
        setTextColor in class RMShape
      • isUnderlined

        public boolean isUnderlined()
        Returns if char 0 is underlined.
        Overrides:
        isUnderlined in class RMShape
      • setUnderlined

        public void setUnderlined​(boolean aFlag)
        Sets all chars to be underlined.
        Overrides:
        setUnderlined in class RMShape
      • getAlign

        public byte getAlign()
        Returns the alignment for char 0.
      • setAlign

        public void setAlign​(int align)
        Sets the align for all chars.
      • getAlignString

        public java.lang.String getAlignString()
        Returns the alignment as a string, one of: "left", "center" or "right".
      • getAlignVertical

        public byte getAlignVertical()
        Returns the vertical alignment.
      • setAlignVertical

        public void setAlignVertical​(byte anAlignment)
        Sets the vertical alginment.
      • getAlignVerticalString

        public java.lang.String getAlignVerticalString()
        Returns the vertical alignment as a string, one of: "top", "middle" or "bottom".
      • getWraps

        public byte getWraps()
        Returns the wrapping behavior for over-filled rpgCloned text (NONE, WRAP, SHRINK).
      • setWraps

        public void setWraps​(byte aValue)
        Sets the wrapping behavior for over-filled rpgCloned text (NONE, WRAP, SHRINK).
      • getPerformsWrap

        public boolean getPerformsWrap()
        Returns whether text should wrap around other shapes that cause wrap.
      • setPerformsWrap

        public void setPerformsWrap​(boolean aFlag)
        Sets whether text should wrap around other shapes that cause wrap.
      • getCoalesceNewlines

        public boolean getCoalesceNewlines()
        Returns whether text should coalesce consecutive newlines in rpgClone.
      • setCoalesceNewlines

        public void setCoalesceNewlines​(boolean aFlag)
        Sets whether text should coalesce consecutive newlines in rpgClone.
      • getDrawsSelectionRect

        public boolean getDrawsSelectionRect()
        Returns whether text should always draw at least a light gray border (useful when editing).
      • setDrawsSelectionRect

        public void setDrawsSelectionRect​(boolean aValue)
        Sets whether text should always draw at least a light-gray border (useful when editing).
      • getCharSpacing

        public float getCharSpacing()
        Returns the char spacing at char 0.
      • setCharSpacing

        public void setCharSpacing​(float aValue)
        Sets the char spacing for the text string.
      • getLineSpacing

        public float getLineSpacing()
        Returns the line spacing at char 0.
      • setLineSpacing

        public void setLineSpacing​(float aHeight)
        Sets the line spacing for all chars.
      • getLineGap

        public float getLineGap()
        Returns the line gap at char 0.
      • setLineGap

        public void setLineGap​(float aHeight)
        Sets the line gap for all chars.
      • getLineHeightMin

        public float getLineHeightMin()
        Returns the minimum line height at char 0.
      • setLineHeightMin

        public void setLineHeightMin​(float aHeight)
        Sets the minimum line height for all chars.
      • getLineHeightMax

        public float getLineHeightMax()
        Returns the maximum line height at char 0.
      • setLineHeightMax

        public void setLineHeightMax​(float aHeight)
        Sets the maximum line height for all chars.
      • getTextOrigin

        public RMPoint getTextOrigin()
        Returns the point inside this text where the first character is placed.
      • getMarginLeft

        public float getMarginLeft()
        Returns the left margin of the text (default to 2).
      • getMarginRight

        public float getMarginRight()
        Returns the right margin of the text (defaults to 2).
      • getMarginTop

        public float getMarginTop()
        Returns the top margin of the text (defaults to 1).
      • getMarginBottom

        public float getMarginBottom()
        Returns the bottom margin of the text (defaults to 0).
      • getTextBounds

        public RMRect getTextBounds()
        Returns the actual bounding rect of the text (currently just inset 2 pixels on either side).
      • getBoundsFromTextBounds

        public RMRect getBoundsFromTextBounds​(RMRect aRect)
        Returns bounds from given text bounds, adjusted to account for text margins.
      • getPathInBounds

        public RMPath getPathInBounds()
        Overrides shape implementation to pass through getPathInBounds(inset).
        Overrides:
        getPathInBounds in class RMShape
      • getPathInBounds

        public RMPath getPathInBounds​(int inset)
        Returns the shape's path scaled to the shape's current bounds.
      • peerDidChange

        public void peerDidChange​(RMShape aShape)
        This notification method is called when any peer is changed.
      • getPathShape

        public RMShape getPathShape()
        Returns the shape that provides the path for this text to wrap text to.
      • setPathShape

        public void setPathShape​(RMShape aShape)
        Sets the shape that provides the path for this text to wrap text to.
      • setHeight

        public void setHeight​(double aValue)
        Overrides shape implementation to reset height to fit.
        Overrides:
        setHeight in class RMShape
      • setRadius

        public void setRadius​(float aValue)
        Overrides rectangle implementation to potentially force text relayout.
        Overrides:
        setRadius in class RMRectangle
      • getLinkedText

        public RMLinkedText getLinkedText()
        Returns the linked text for this text (if any).
      • setLinkedText

        public void setLinkedText​(RMLinkedText anLinkedText)
        Sets the linked text for this text (if any).
      • getTextLayout

        public RMTextLayout getTextLayout()
        Returns a text layout configured for this text, with layout already performed.
      • getTextLayout

        public RMTextLayout getTextLayout​(boolean performLayout)
        Returns a text layout configured for this text, with an option to perform layout.
      • getWidthToFit

        public float getWidthToFit()
        Returns the ideal width for this RMText.
        Overrides:
        getWidthToFit in class RMShape
      • getHeightToFit

        public float getHeightToFit()
        Returns the ideal height for this RMText.
        Overrides:
        getHeightToFit in class RMShape
      • getHeightToFit

        public float getHeightToFit​(boolean includeFinalEmptyLine)
        Returns the ideal height for this RMText. Provides an option to include the height of trailing newlines.
      • setHeightToFit

        public void setHeightToFit​(float aValue)
        Sets the text's height to fit (often called with -1 to force recalc).
      • scaleTextToFit

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

        public float getFontScale()
        Returns the scale to apply to all fonts in text's XString (defaults to 1).
      • setFontScale

        public void setFontScale​(float aFactor)
        Sets the scale to apply to all fonts in text's XString.
      • rpgClone

        public RMShape rpgClone​(ReportMill aReportMill)
        This method clones the RMText, performing subtition on the XString.
        Overrides:
        rpgClone in class RMShape
      • rpgClonePreprocess

        public void rpgClonePreprocess​(ReportMill aReportMill)
        This standard rpgClone hook allows texts set to wrap to perform the wrap.
        Overrides:
        rpgClonePreprocess in class RMShape
      • resolvePageReferences

        public void resolvePageReferences​(ReportMill aReportMill,
                                          java.lang.Object userInfo)
        Re-does the RPG clone to resolve any @Page@ keys (assumed to be present in userInfo).
        Overrides:
        resolvePageReferences in class RMShape
      • toString

        public java.lang.String toString()
        Standard toSring implementation.
        Overrides:
        toString in class RMShape
      • turnToChars

        public RMShape turnToChars​(boolean inPlace)
        Returns a group shape with an RMText shape for each glyph in the text.
      • turnToPath

        public RMShape turnToPath​(boolean inPlace)
        Returns an RMPolygon shape with the glyph path for the chars in this text. Assumes one frag.
      • getPolygonForFrag

        public RMPolygon getPolygonForFrag​(RMTextFrag aFrag)
        Returns a polygon shape for the glyphs in a given text frag.
      • superSelectable

        public boolean superSelectable()
        Editor method - indicates that this shape can be super selected.
        Overrides:
        superSelectable in class RMShape
      • isStructured

        public boolean isStructured()
        Editor method.
      • setNeedsRepaint

        public void setNeedsRepaint()
        Editor method - passes on repaints to linked text.
        Overrides:
        setNeedsRepaint in class RMShape
      • clone

        public java.lang.Object clone()
        Standard clone implementation.
        Overrides:
        clone in class RMShape
      • equals

        public boolean equals​(java.lang.Object anObj)
        Standard equals implementation.
        Overrides:
        equals in class RMRectangle
      • copy

        public void copy​(java.lang.Object anObj)
        Copies attributes from given object.
        Overrides:
        copy in class RMRectangle
      • fromXMLFinish

        public void fromXMLFinish​(RXArchiver anArchiver,
                                  RXElement anElement)
        XML reference unarchival - to unarchive linked text.