/*
   Item8: text items
*/

import java.awt.*;

public class Item8 extends Item7
{
   String text = "";
   FontMetrics fontMetrics;

   // DRAW A TEXT ITEM IN HELVETICA FONT.

   // MAKE A THICK SHADOW, OUTLINE OR HALO BY SUCCESSIVE OVERDRAWING WITH X,Y OFFSETS.

   public void draw(Graphics g, int x, int y, int r) {
      if (text.length() > 0) {
         int b = 0;
         fontMetrics = g.getFontMetrics(g.getFont());
         int w = fontMetrics.stringWidth(text);
         Color color = g.getColor();
         if (highlight) {
            b = thicken ? 8 : 6;
            if (color != shadowColor)
               g.setColor(Color.white);
            for (int i = -b ; i <= b ; i++)
            for (int j = -b ; j <= b ; j++)
               if (i*i + j*j <= b*b)
                  g.drawString(text, x + x0 - w/2 + i, y + y0 + 16 + j);
         }
         if (color != shadowColor)
            g.setColor(color == Color.white ? faintColor : Color.black);
         b = thicken ? 4 : 2;
         for (int i = -b ; i <= b ; i++)
         for (int j = -b ; j <= b ; j++)
            if (i*i + j*j <= b*b)
               g.drawString(text, x + x0 - w/2 + i, y + y0 + 16 + j);
         g.setColor(color);
         g.drawString(text, x + x0 - w/2, y + y0 + 16);
      }
      else
         super.draw(g, x, y, r);
   }

   // HIT TESTING FOR A TEXT ITEM REQUIRES MEASURING STRING WIDTH IN THIS FONT.

   public boolean contains(int x, int y) {
      if (text.length() > 0) {
         if (fontMetrics == null)
            return false;
         int w = fontMetrics.stringWidth(text);
         return x >= x0-w/2 && x < x0+w/2 && y >= y0-8 && y < y0+22;
      }
      else
         return super.contains(x, y);
   }
}