Example #1
0
 /**
  * Calculates the width and height of the text line.
  *
  * @param g2 the graphics device.
  * @return The width and height.
  */
 public Size2D calculateDimensions(Graphics2D g2) {
   double width = 0.0;
   double height = 0.0;
   for (TextFragment fragment : this.fragments) {
     final Size2D dimension = fragment.calculateDimensions(g2);
     width = width + dimension.getWidth();
     height = Math.max(height, dimension.getHeight());
   }
   return new Size2D(width, height);
 }
Example #2
0
 /**
  * Draws the text line.
  *
  * @param g2 the graphics device.
  * @param anchorX the x-coordinate for the anchor point.
  * @param anchorY the y-coordinate for the anchor point.
  * @param anchor the point on the text line that is aligned to the anchor point.
  * @param rotateX the x-coordinate for the rotation point.
  * @param rotateY the y-coordinate for the rotation point.
  * @param angle the rotation angle (in radians).
  */
 public void draw(
     Graphics2D g2,
     float anchorX,
     float anchorY,
     TextAnchor anchor,
     float rotateX,
     float rotateY,
     double angle) {
   Size2D dim = calculateDimensions(g2);
   float xAdj = 0.0f;
   if (anchor.isHorizontalCenter()) {
     xAdj = (float) -dim.getWidth() / 2.0f;
   } else if (anchor.isHorizontalRight()) {
     xAdj = (float) -dim.getWidth();
   }
   float x = anchorX + xAdj;
   float yOffset = calculateBaselineOffset(g2, anchor);
   for (TextFragment fragment : this.fragments) {
     Size2D d = fragment.calculateDimensions(g2);
     fragment.draw(g2, x, anchorY + yOffset, TextAnchor.BASELINE_LEFT, rotateX, rotateY, angle);
     x = x + (float) d.getWidth();
   }
 }