Class RMText

All Implemented Interfaces:
RMArchiver.Archiving, 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();
 
  • Field Details

  • Constructor Details

    • 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(String plainText)
      Creates a text instance initialized with the given plain text String.
  • Method Details

    • 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 String getText()
      Returns the text associated with this RMText as a plain String.
    • setText

      public void setText(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
    • getFormat

      public RMFormat getFormat()
      Returns the format for char 0.
      Overrides:
      getFormat 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
    • getOutline

      public RMXString.Outline getOutline()
      Returns the outline for char 0.
      Overrides:
      getOutline in class RMShape
    • setOutline

      public void setOutline(RMXString.Outline anOutline)
      Sets the Outline for all characters.
      Overrides:
      setOutline 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 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 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.
    • getPath

      public RMPath getPath()
      Returns the path for this shape.
      Overrides:
      getPath in class RMRectangle
    • 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, 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 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 Object clone()
      Standard clone implementation.
      Overrides:
      clone in class RMShape
    • equals

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

      public void copy(Object anObj)
      Copies attributes from given object.
      Overrides:
      copy in class RMRectangle
    • initWithArchiver

      public Object initWithArchiver(RMArchiver anArchiver)
      Legacy unarchival.
      Specified by:
      initWithArchiver in interface RMArchiver.Archiving
      Overrides:
      initWithArchiver in class RMRectangle
    • toXML

      public RXElement toXML(RXArchiver anArchiver)
      XML archival.
      Overrides:
      toXML in class RMRectangle
    • fromXML

      public Object fromXML(RXArchiver anArchiver, RXElement anElement)
      XML unarchival.
      Overrides:
      fromXML in class RMRectangle
    • fromXMLFinish

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