package com.horstmann.violet.framework.graphics.shape;
import com.horstmann.violet.framework.graphics.content.Content;
import java.awt.*;
import java.awt.geom.GeneralPath;
/**
* TODO javadoc
* This ...
*
* @author Adrian Bobrowski <adrian071993@gmail.com>
* @date 27.02.2016
*/
public class ContentInsideDiamond extends ContentInsideCustomShape
{
public ContentInsideDiamond(Content content)
{
this(content, 45);
}
/**
* @param content
* @param degrees left and right degrees
*/
public ContentInsideDiamond(Content content, double degrees)
{
super(content, new DiamondShape(degrees));
}
private static final class DiamondShape implements ContentInsideCustomShape.ShapeCreator
{
public DiamondShape(double degrees)
{
if(0 == (degrees)%90 && 0 != (degrees)%180)
{
throw new ArithmeticException("tangent is infinity");
}
tangent = Math.tan(Math.toRadians(degrees));
}
/**
* @param contentWidth width of diamond
* @param contentHeight height of diamond
* @return shape described in the diamond
*/
@Override
public Shape createShape(double contentWidth, double contentHeight)
{
double width = contentWidth + contentHeight * tangent;
double height = contentHeight + contentWidth / tangent;
GeneralPath diamond = new GeneralPath();
diamond.moveTo(0, height/2);
diamond.lineTo(width/2, 0);
diamond.lineTo(width, height/2);
diamond.lineTo(width/2, height);
diamond.lineTo(0, height/2);
return diamond;
}
private double tangent;
}
}