package org.geogebra.desktop.awt;
import java.awt.Shape;
import java.awt.geom.Area;
import org.geogebra.common.awt.GAffineTransform;
import org.geogebra.common.awt.GArea;
import org.geogebra.common.awt.GPathIterator;
import org.geogebra.common.awt.GRectangle;
import org.geogebra.common.awt.GRectangle2D;
import org.geogebra.common.awt.GShape;
import org.geogebra.common.util.debug.Log;
public class GAreaD implements GArea, GShapeD {
private Area impl;
/*
* public Area(GeneralPathClipped boundingPath) { impl = new
* java.awt.geom.Area(geogebra.awt.GenericShape.getAwtShape(boundingPath));
* }
*/
public GAreaD() {
impl = new Area();
}
public GAreaD(Shape shape) {
impl = new Area(shape);
}
public GAreaD(GShape shape) {
impl = new Area(GGenericShapeD.getAwtShape(shape));
}
public static Area getAWTArea(GArea a) {
if (!(a instanceof GAreaD)) {
if (a != null) {
Log.debug("other type");
}
return null;
}
return ((GAreaD) a).impl;
}
@Override
public void subtract(GArea a) {
if (!(a instanceof GAreaD)) {
return;
}
impl.subtract(((GAreaD) a).impl);
}
@Override
public void add(GArea a) {
if (!(a instanceof GAreaD)) {
return;
}
impl.add(((GAreaD) a).impl);
}
@Override
public void intersect(GArea a) {
if (!(a instanceof GAreaD)) {
return;
}
impl.intersect(((GAreaD) a).impl);
}
@Override
public void exclusiveOr(GArea a) {
if (!(a instanceof GAreaD)) {
return;
}
impl.exclusiveOr(((GAreaD) a).impl);
}
@Override
public boolean intersects(int x, int y, int w, int h) {
return impl.intersects(x, y, w, h);
}
@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 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 boolean isEmpty() {
return impl.isEmpty();
}
}