package org.geogebra.desktop.awt;
import java.awt.BasicStroke;
import java.awt.Shape;
import java.awt.geom.Path2D;
import org.geogebra.common.awt.GBasicStroke;
import org.geogebra.common.awt.GShape;
import org.geogebra.common.factories.AwtFactory;
/**
* Desktop wrapper for stroke
*
*/
public class GBasicStrokeD implements GBasicStroke {
private BasicStroke impl;
public GBasicStrokeD(BasicStroke basicStroke) {
impl = basicStroke;
}
public GBasicStrokeD(double f, int cap, int join) {
impl = new BasicStroke((float) f, cap, join);
}
public GBasicStrokeD(double f) {
impl = new BasicStroke((float) f);
}
@Override
public int getEndCap() {
return impl.getEndCap();
}
@Override
public double getMiterLimit() {
return impl.getMiterLimit();
}
@Override
public int getLineJoin() {
return impl.getLineJoin();
}
@Override
public GShape createStrokedShape(GShape shape) {
Shape shapeD = GGenericShapeD.getAwtShape(shape);
if (shapeD instanceof Path2D) {
Path2D p2d = (Path2D) shapeD;
if (p2d.getCurrentPoint() != null
&& Double.isNaN(p2d.getCurrentPoint().getX())) {
// Log.debug("fix kicks in");
return new GGenericShapeD(shapeD);
}
}
return new GGenericShapeD(impl.createStrokedShape(shapeD));
}
@Override
public double getLineWidth() {
return impl.getLineWidth();
}
@Override
public double[] getDashArray() {
return AwtFactory.floatToDouble(impl.getDashArray());
}
public BasicStroke getImpl() {
return impl;
}
}