package org.geogebra.desktop.awt; import java.awt.Shape; import org.geogebra.common.awt.GAffineTransform; import org.geogebra.common.awt.GPathIterator; import org.geogebra.common.awt.GRectangle2D; import org.geogebra.common.awt.GShape; import org.geogebra.common.euclidian.GeneralPathClipped; import org.geogebra.common.util.debug.Log; public class GGenericShapeD implements GShapeD { private Shape impl; private GGenericShapeD() { } @Override public boolean intersects(int i, int j, int k, int l) { return impl.intersects(i, j, k, l); } public static Shape getAwtShape(GShape s) { if (s instanceof GShapeD) { return ((GShapeD) s).getAwtShape(); } if (s instanceof GeneralPathClipped) { return GGeneralPathD.getAwtGeneralPath( ((GeneralPathClipped) s).getGeneralPath()); } if (s != null) { Log.error("other type " + s); } return null; } public GGenericShapeD(Shape s) { this(); impl = s; } @Override public boolean contains(int x, int y) { return impl.contains(x, y); } @Override public GRectangleD 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); } public void setImpl(Shape newImpl) { impl = newImpl; } @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)); } }