package visual.statik.described;


import java.awt.*;
import java.awt.font.*;
import java.awt.geom.*;
import javax.swing.*;

/**
 * A panel that displays a GlyphVector
 * in a spiral
 *
 * @author  Prof. David Bernstein, James Madison University
 * @version 1.0
 */
public class SpiralGlyphCanvas extends GlyphCanvas
{

    /**
     * Constructor
     */
    public SpiralGlyphCanvas()
    {
       super();
    }

//[paintGlyphs.

    /**
     * Render the glyphs
     */
    protected void paintGlyphs(Graphics2D g2, String text)
    {
       AffineTransform         at, trans;
       AlphaComposite          alpha;
       Dimension               d;
       float                   angle, x, y;
       FontRenderContext       frc;
       GlyphVector             glyphs;
       int                     i;
       Shape                   shape, transformedShape;

       d = getSize();

       frc = g2.getFontRenderContext();
       glyphs = font.createGlyphVector(frc, text);
       shape = glyphs.getOutline(0.0f, 100.0f);
       g2.setColor(Color.BLACK);

       for (i=0; i < 6; i++) 
       {
          angle = (float)(Math.PI/6.0 * i);
          x = (float)(d.width/2.0);
          y = (float)(d.height/2.0);
          at = AffineTransform.getRotateInstance(angle,x,y);
          trans = AffineTransform.getTranslateInstance(x,y);
          at.concatenate(trans);

          transformedShape = at.createTransformedShape(shape);
            
          g2.fill(transformedShape);
       }
    }
//]paintGlyphs.
}
