//[skeleton1.
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;


/**
 * An example of a described static visual content
 *
 * @author  Prof. David Bernstein, James Madison University
 * @version 1.0
 */
public class BuzzyComponent extends JComponent
{
    private Arc2D.Float            helmetShape, visorShape;       
    private BasicStroke            stroke;
    private Color                  black, gold, gray, purple;
    private Path2D.Float           bodyShape;       
    private QuadCurve2D.Float      hairShape;

//]skeleton1.
//[constructor1.
    /**
     * Default Constructor
     */
    public BuzzyComponent()
    {
       super();

       black  = Color.BLACK;
       gold   = new Color(0xc2,0xa1,0x4d);
       gray   = new Color(0xaa,0xaa,0xaa);
       purple = new Color(0x45,0x00,0x84);

       stroke = new BasicStroke();
//]constructor1.
       //[body1.

       bodyShape = new Path2D.Float();
       bodyShape.moveTo( 20, 50);
       bodyShape.lineTo( 20, 70);
       bodyShape.lineTo( 20, 90);
       bodyShape.lineTo( 10, 90);
       bodyShape.lineTo( 10,100);
       bodyShape.lineTo( 80,100);
       bodyShape.lineTo( 80, 90);
       bodyShape.lineTo( 40, 90);
       bodyShape.lineTo( 40, 70);
       bodyShape.lineTo( 40, 50);
       bodyShape.closePath();
       //]body1.

       //[hair.
       hairShape = new QuadCurve2D.Float(10,2,40,10,30,25);       
       //]hair.

       //[helmet.
       helmetShape = new Arc2D.Float(2,20,70,40,2,360,Arc2D.OPEN);
       //]helmet.

       //[visor.
       visorShape = new Arc2D.Float(40,25,35,30,315,90,Arc2D.PIE);
       //]visor.
//[constructor2.
    }
//]constructor2.

//[paint
    /**
     * Paint this Component
     *
     * @param g   The rendering engine to use
     */
    public void paint(Graphics g)
    {
       Graphics2D     g2;

       g2 = (Graphics2D)g;
       g2.setStroke(stroke);
       
       g2.setColor(purple);
       g2.fill(bodyShape);
       g2.setColor(black);
       g2.draw(bodyShape);
       
       g2.setColor(purple);
       g2.draw(hairShape);
       
       g2.setColor(gold);
       g2.fill(helmetShape);
       g2.setColor(black);
       g2.draw(helmetShape);
       
       g2.setColor(gray);
       g2.fill(visorShape);
       g2.setColor(black);
       g2.draw(visorShape);
    }
//]paint
//[skeleton2.
}
//]skeleton2.
