Class TextStroke

  • All Implemented Interfaces:
    java.awt.Stroke

    public class TextStroke
    extends java.lang.Object
    implements java.awt.Stroke
    A stroke that draws text along the stroked path, rotating the individual glyphs to follow the shape of the curve.
    Author:
    Chris Jennings
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  TextStroke.Style
      The Style determines how the text is placed fitted to the path when the length of the text and the length of a path are not the same.
    • Constructor Summary

      Constructors 
      Constructor Description
      TextStroke​(java.lang.String text, java.awt.Font font)
      Creates a text stroke for the given text and font that will fit the text to fill the entire path and use default flatness and limit parameters.
      TextStroke​(java.lang.String text, java.awt.Font font, TextStroke.Style style)
      Creates a text stroke for the given text, font, and fitting style and use default flatness and limit parameters.
      TextStroke​(java.lang.String text, java.awt.Font font, TextStroke.Style style, double flatness, int limit)
      Creates a text stroke for the given text and font that will fit the text to fill the entire path and use default flatness and limit parameters.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.awt.Shape createStrokedShape​(java.awt.Shape shape)  
      java.awt.geom.Point2D.Double getEndPoint()
      Returns the point at which the last call to createStrokedShape(java.awt.Shape) last drew a glyph.
      java.awt.Font getFont()
      Returns the font used to draw text.
      java.lang.String getText()
      Returns the text that will be drawn along stroked paths.
      boolean isInsideOut()
      Returns true if the text is drawn inside-out, that is, if the direction that the glyphs protrude from the path is flipped.
      boolean isLeftToRight()
      Returns true if the text is treated as a left-to-right language.
      void setFont​(java.awt.Font font)
      Sets the font used that the stroke draws text with.
      void setInsideOut​(boolean flip)
      Sets whether the text will protrude out of the shape (the default) or into it.
      void setLeftToRight​(boolean leftToRight)
      Sets the bidi orientation of the text.
      void setText​(java.lang.String text)
      Sets the text that will be drawn along stroked paths.
      double textWidth()
      Returns the width of the current text, if it was rendered in a straight line.
      • Methods inherited from class java.lang.Object

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

      • TextStroke

        public TextStroke​(java.lang.String text,
                          java.awt.Font font)
        Creates a text stroke for the given text and font that will fit the text to fill the entire path and use default flatness and limit parameters.
        Parameters:
        text - the text to be drawn along stroked paths
        font - the font to drawn the text in
      • TextStroke

        public TextStroke​(java.lang.String text,
                          java.awt.Font font,
                          TextStroke.Style style)
        Creates a text stroke for the given text, font, and fitting style and use default flatness and limit parameters.
        Parameters:
        text - the text to be drawn along stroked paths
        font - the font to drawn the text in
        style - the style used to fit text to the path
      • TextStroke

        public TextStroke​(java.lang.String text,
                          java.awt.Font font,
                          TextStroke.Style style,
                          double flatness,
                          int limit)
        Creates a text stroke for the given text and font that will fit the text to fill the entire path and use default flatness and limit parameters.
        Parameters:
        text - the text to be drawn along stroked paths
        font - the font to drawn the text in
        style - the style used to fit text to the path
        flatness - the maximum allowable distance between the control points and the flattened curve
        limit - log2 of the maximum number of line segments that will be generated for any curved segment of the path
        Throws:
        java.lang.IllegalArgumentException - if flatness or limit is less than 0
    • Method Detail

      • setInsideOut

        public final void setInsideOut​(boolean flip)
        Sets whether the text will protrude out of the shape (the default) or into it. When drawing text along the path, the rotation of each glyph is determined by finding the right angle vector to a tangent to the curve along the portion of the curve covered by the glyph. There are two such right vectors: one points from the curve towards the outside of the shape, and one points from the curve towards the inside of the shape. When this is set to true, the inside vector will be selected and the order in which the glyphs are drawn will be reversed.
        Parameters:
        flip - if true, flips the text inside-out
      • isInsideOut

        public final boolean isInsideOut()
        Returns true if the text is drawn inside-out, that is, if the direction that the glyphs protrude from the path is flipped.
        Returns:
        true if the glyph direction should be flipped
      • setText

        public final void setText​(java.lang.String text)
        Sets the text that will be drawn along stroked paths.
        Parameters:
        text - the text drawn by this stroke
      • getText

        public final java.lang.String getText()
        Returns the text that will be drawn along stroked paths.
        Returns:
        the text drawn by this stroke
      • setLeftToRight

        public final void setLeftToRight​(boolean leftToRight)
        Sets the bidi orientation of the text. Set to true for left-to-right languages (e.g., English) and false for right-to-left languages (e.g., Arabic). The default is true.
        Parameters:
        leftToRight - true if the text should be treated as left-to-right
      • isLeftToRight

        public final boolean isLeftToRight()
        Returns true if the text is treated as a left-to-right language.
        Returns:
        true if the bidi order is treated as left-to-right
      • setFont

        public final void setFont​(java.awt.Font font)
        Sets the font used that the stroke draws text with.
        Parameters:
        font - the font used by letters in this stroke
      • getFont

        public final java.awt.Font getFont()
        Returns the font used to draw text.
        Returns:
        the font used to draw letters along stroked paths
      • createStrokedShape

        public java.awt.Shape createStrokedShape​(java.awt.Shape shape)
        Specified by:
        createStrokedShape in interface java.awt.Stroke
      • getEndPoint

        public java.awt.geom.Point2D.Double getEndPoint()
        Returns the point at which the last call to createStrokedShape(java.awt.Shape) last drew a glyph.
        Returns:
        the end point of the last glyph
      • textWidth

        public double textWidth()
        Returns the width of the current text, if it was rendered in a straight line.
        Returns:
        the length of path that would naturally fit the current text