package org.mars_sim.msp.ui.swing.tool;

import java.awt.BasicStroke;
import java.awt.Component;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.Rectangle2D;

public class BasicStrokeExample {
  public static void main(String[] args) {
    Frame frame = new Frame("BasicStrokeExample ");
    frame.setSize(300, 200);
    frame.add(new CanvasToDisplay());
    frame.setVisible(true);
    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
  }
}

class CanvasToDisplay extends Component {
  public void paint(Graphics g) {
    Graphics2D g2D = (Graphics2D) g;
    BasicStroke bs = new BasicStroke(10);
    Rectangle2D r2d = new Rectangle2D.Double(10, 50, 280, 90);
    g2D.setStroke(bs);
    g2D.draw(r2d);
//    bs = new BasicStroke(2, BasicStroke.JOIN_MITER, BasicStroke.JOIN_BEVEL);
    bs = new BasicStroke(3f,
  	      BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 5.0f, new float[] {1.0f}, 0.0f);
    r2d = new Rectangle2D.Double(30, 75, 60, 60);
    g2D.setStroke(bs);
    g2D.draw(r2d);
    bs = new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER);
    r2d = new Rectangle2D.Double(120, 75, 60, 40);
    g2D.setStroke(bs);
    g2D.draw(r2d);
    bs = new BasicStroke(2, BasicStroke.JOIN_ROUND, BasicStroke.JOIN_ROUND);
    r2d = new Rectangle2D.Double(210, 75, 60, 40);
    g2D.setStroke(bs);
   
    float[] dashArray = bs.getDashArray();
    float dashPhase = bs.getDashPhase();
    int endCap = bs.getEndCap();
    int lineJoin = bs.getLineJoin();
    float lineWidth = bs.getLineWidth();
    float miterLimit = bs.getMiterLimit();
    Shape createStrokedShape = bs.createStrokedShape(r2d);
   
    g2D.draw(r2d);
  }
}