Class AWTGVTGlyphVector

java.lang.Object
org.apache.batik.gvt.font.AWTGVTGlyphVector
All Implemented Interfaces:
GVTGlyphVector

public class AWTGVTGlyphVector extends Object implements GVTGlyphVector
This is a wrapper class for a java.awt.font.GlyphVector instance.
Version:
$Id: AWTGVTGlyphVector.java 1733416 2016-03-03 07:07:13Z gadams $
  • Field Details

    • PAINT_INFO

      public static final AttributedCharacterIterator.Attribute PAINT_INFO
    • awtGlyphVector

      private GlyphVector awtGlyphVector
    • gvtFont

      private AWTGVTFont gvtFont
    • ci

      private CharacterIterator ci
    • defaultGlyphPositions

      private Point2D[] defaultGlyphPositions
    • glyphPositions

      private Point2D.Float[] glyphPositions
    • glyphTransforms

      private AffineTransform[] glyphTransforms
    • glyphOutlines

      private Shape[] glyphOutlines
    • glyphVisualBounds

      private Shape[] glyphVisualBounds
    • glyphLogicalBounds

      private Shape[] glyphLogicalBounds
    • glyphVisible

      private boolean[] glyphVisible
    • glyphMetrics

      private GVTGlyphMetrics[] glyphMetrics
    • outline

      private GeneralPath outline
    • visualBounds

      private Rectangle2D visualBounds
    • logicalBounds

      private Rectangle2D logicalBounds
    • bounds2D

      private Rectangle2D bounds2D
    • scaleFactor

      private double scaleFactor
    • ascent

      private float ascent
    • descent

      private float descent
    • cacheTPI

      private TextPaintInfo cacheTPI
    • outlinesPositioned

      private static final boolean outlinesPositioned
    • drawGlyphVectorWorks

      private static final boolean drawGlyphVectorWorks
    • glyphVectorTransformWorks

      private static final boolean glyphVectorTransformWorks
  • Constructor Details

    • AWTGVTGlyphVector

      public AWTGVTGlyphVector(GlyphVector glyphVector, AWTGVTFont font, double scaleFactor, CharacterIterator ci)
      Creates and new AWTGVTGlyphVector from the specified GlyphVector and AWTGVTFont objects.
      Parameters:
      glyphVector - The glyph vector that this one will be based upon.
      font - The font that is creating this glyph vector.
      scaleFactor - The scale factor to apply to the glyph vector. IMPORTANT: This is only required because the GlyphVector class doesn't handle font sizes less than 1 correctly. By using the scale factor we can use a GlyphVector created by a larger font and then scale it down to the correct size.
      ci - The character string that this glyph vector represents.
  • Method Details

    • getFont

      public GVTFont getFont()
      Returns the GVTFont associated with this GVTGlyphVector.
      Specified by:
      getFont in interface GVTGlyphVector
    • getFontRenderContext

      public FontRenderContext getFontRenderContext()
      Returns the FontRenderContext associated with this GlyphVector.
      Specified by:
      getFontRenderContext in interface GVTGlyphVector
    • getGlyphCode

      public int getGlyphCode(int glyphIndex)
      Returns the glyphcode of the specified glyph.
      Specified by:
      getGlyphCode in interface GVTGlyphVector
    • getGlyphCodes

      public int[] getGlyphCodes(int beginGlyphIndex, int numEntries, int[] codeReturn)
      Returns an array of glyphcodes for the specified glyphs.
      Specified by:
      getGlyphCodes in interface GVTGlyphVector
    • getGlyphJustificationInfo

      public GlyphJustificationInfo getGlyphJustificationInfo(int glyphIndex)
      Returns the justification information for the glyph at the specified index into this GlyphVector.
      Specified by:
      getGlyphJustificationInfo in interface GVTGlyphVector
    • getBounds2D

      public Rectangle2D getBounds2D(AttributedCharacterIterator aci)
      Returns a tight bounds on the GlyphVector including stroking.
      Specified by:
      getBounds2D in interface GVTGlyphVector
      Parameters:
      aci - Required to get painting attributes of glyphVector.
    • getLogicalBounds

      public Rectangle2D getLogicalBounds()
      Returns the logical bounds of this GlyphVector. This is a bound useful for hit detection and highlighting.
      Specified by:
      getLogicalBounds in interface GVTGlyphVector
    • getGlyphLogicalBounds

      public Shape getGlyphLogicalBounds(int glyphIndex)
      Returns the logical bounds of the specified glyph within this GlyphVector.
      Specified by:
      getGlyphLogicalBounds in interface GVTGlyphVector
    • computeGlyphLogicalBounds

      private void computeGlyphLogicalBounds()
      Calculates the logical bounds for each glyph. The logical bounds are what is used for highlighting the glyphs when selected.
    • getGlyphMetrics

      public GVTGlyphMetrics getGlyphMetrics(int glyphIndex)
      Returns the metrics of the glyph at the specified index into this GVTGlyphVector.
      Specified by:
      getGlyphMetrics in interface GVTGlyphVector
    • getGlyphOutline

      public Shape getGlyphOutline(int glyphIndex)
      Returns a Shape whose interior corresponds to the visual representation of the specified glyph within this GlyphVector.
      Specified by:
      getGlyphOutline in interface GVTGlyphVector
    • outlinesPositioned

      static boolean outlinesPositioned()
    • getGlyphCellBounds

      public Rectangle2D getGlyphCellBounds(int glyphIndex)
      Returns the bounding box of the specified glyph, considering only the glyph's metrics (ascent, descent, advance) rather than the actual glyph shape.
      Specified by:
      getGlyphCellBounds in interface GVTGlyphVector
    • getGlyphPosition

      public Point2D getGlyphPosition(int glyphIndex)
      Returns the position of the specified glyph within this GlyphVector.
      Specified by:
      getGlyphPosition in interface GVTGlyphVector
    • getGlyphPositions

      public float[] getGlyphPositions(int beginGlyphIndex, int numEntries, float[] positionReturn)
      Returns an array of glyph positions for the specified glyphs
      Specified by:
      getGlyphPositions in interface GVTGlyphVector
    • getGlyphTransform

      public AffineTransform getGlyphTransform(int glyphIndex)
      Gets the transform of the specified glyph within this GlyphVector.
      Specified by:
      getGlyphTransform in interface GVTGlyphVector
    • getGlyphVisualBounds

      public Shape getGlyphVisualBounds(int glyphIndex)
      Returns the visual bounds of the specified glyph within the GlyphVector.
      Specified by:
      getGlyphVisualBounds in interface GVTGlyphVector
    • getNumGlyphs

      public int getNumGlyphs()
      Returns the number of glyphs in this GlyphVector.
      Specified by:
      getNumGlyphs in interface GVTGlyphVector
    • getOutline

      public Shape getOutline()
      Returns a Shape whose interior corresponds to the visual representation of this GlyphVector.
      Specified by:
      getOutline in interface GVTGlyphVector
    • getOutline

      public Shape getOutline(float x, float y)
      Returns a Shape whose interior corresponds to the visual representation of this GlyphVector, offset to x, y.
      Specified by:
      getOutline in interface GVTGlyphVector
    • getGeometricBounds

      public Rectangle2D getGeometricBounds()
      Returns the visual bounds of this GlyphVector The visual bounds is the tightest rectangle enclosing all non-background pixels in the rendered representation of this GlyphVector.
      Specified by:
      getGeometricBounds in interface GVTGlyphVector
    • performDefaultLayout

      public void performDefaultLayout()
      Assigns default positions to each glyph in this GlyphVector.
      Specified by:
      performDefaultLayout in interface GVTGlyphVector
    • setGlyphPosition

      public void setGlyphPosition(int glyphIndex, Point2D newPos)
      Sets the position of the specified glyph within this GlyphVector.
      Specified by:
      setGlyphPosition in interface GVTGlyphVector
    • setGlyphTransform

      public void setGlyphTransform(int glyphIndex, AffineTransform newTX)
      Sets the transform of the specified glyph within this GlyphVector.
      Specified by:
      setGlyphTransform in interface GVTGlyphVector
    • setGlyphVisible

      public void setGlyphVisible(int glyphIndex, boolean visible)
      Tells the glyph vector whether or not to draw the specified glyph.
      Specified by:
      setGlyphVisible in interface GVTGlyphVector
    • isGlyphVisible

      public boolean isGlyphVisible(int glyphIndex)
      Returns true if specified glyph will be rendered.
      Specified by:
      isGlyphVisible in interface GVTGlyphVector
    • getCharacterCount

      public int getCharacterCount(int startGlyphIndex, int endGlyphIndex)
      Returns the number of chars represented by the glyphs within the specified range.
      Specified by:
      getCharacterCount in interface GVTGlyphVector
      Parameters:
      startGlyphIndex - The index of the first glyph in the range.
      endGlyphIndex - The index of the last glyph in the range.
      Returns:
      The number of chars.
    • isReversed

      public boolean isReversed()
      Description copied from interface: GVTGlyphVector
      Return true if glyphs have been reversed.
      Specified by:
      isReversed in interface GVTGlyphVector
    • maybeReverse

      public void maybeReverse(boolean mirror)
      Description copied from interface: GVTGlyphVector
      Reverse (and optionally mirror) glyphs if not already reversed.
      Specified by:
      maybeReverse in interface GVTGlyphVector
    • draw

      public void draw(Graphics2D graphics2D, AttributedCharacterIterator aci)
      Draws this glyph vector.
      Specified by:
      draw in interface GVTGlyphVector