package org.geogebra.desktop.awt;
import java.awt.Shape;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import org.geogebra.common.awt.GAffineTransform;
import org.geogebra.common.awt.GLine2D;
import org.geogebra.common.awt.GPathIterator;
import org.geogebra.common.awt.GPoint2D;
import org.geogebra.common.awt.GRectangle;
import org.geogebra.common.awt.GRectangle2D;
public class GLine2DD implements GLine2D, GShapeD {
private Line2D impl;
public GLine2DD() {
impl = new Line2D.Double();
}
public GLine2DD(Line2D line) {
impl = line;
}
@Override
public boolean intersects(int i, int j, int k, int l) {
return impl.intersects(i, j, k, l);
}
@Override
public boolean contains(int x, int y) {
return impl.contains(x, y);
}
@Override
public GRectangle getBounds() {
return new GRectangleD(impl.getBounds());
}
@Override
public GRectangle2D getBounds2D() {
return new GGenericRectangle2DD(impl.getBounds2D());
}
@Override
public boolean contains(GRectangle2D rectangle) {
return impl.contains(GRectangleD.getAWTRectangle2D(rectangle));
}
@Override
public boolean contains(double xTry, double yTry) {
return impl.contains(xTry, yTry);
}
@Override
public Shape getAwtShape() {
return impl;
}
@Override
public void setLine(double x1, double y1, double x2, double y2) {
impl.setLine(x1, y1, x2, y2);
}
@Override
public GPathIterator getPathIterator(GAffineTransform affineTransform) {
return new GPathIteratorD(impl.getPathIterator(
GAffineTransformD.getAwtAffineTransform(affineTransform)));
}
public GPathIterator getPathIterator(GAffineTransform at, double flatness) {
return new GPathIteratorD(impl.getPathIterator(
GAffineTransformD.getAwtAffineTransform(at), flatness));
}
@Override
public boolean intersects(double x, double y, double w, double h) {
return impl.intersects(x, y, w, h);
}
@Override
public boolean intersects(GRectangle2D r) {
return impl.intersects(GGenericRectangle2DD.getAWTRectangle2D(r));
}
@Override
public GPoint2D getP1() {
Point2D p1 = impl.getP1();
if (p1 == null) {
return null;
}
return new GPoint2DD(p1.getX(), p1.getY());
}
@Override
public GPoint2D getP2() {
Point2D p2 = impl.getP2();
if (p2 == null) {
return null;
}
return new GPoint2DD(p2.getX(), p2.getY());
}
@Override
public double getX1() {
return impl.getX1();
}
@Override
public double getY1() {
return impl.getY1();
}
@Override
public double getX2() {
return impl.getX2();
}
@Override
public double getY2() {
return impl.getY2();
}
}