package org.geogebra.desktop.awt;
import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import org.geogebra.common.awt.GAffineTransform;
import org.geogebra.common.awt.GPoint2D;
import org.geogebra.common.awt.GShape;
public class GAffineTransformD implements GAffineTransform {
private AffineTransform at;
public GAffineTransformD() {
at = new AffineTransform();
}
public GAffineTransformD(AffineTransform a) {
at = a;
}
AffineTransform getImpl() {
return at;
}
@Override
public void setTransform(GAffineTransform a) {
at.setTransform(((GAffineTransformD) a).getImpl());
}
@Override
public void setTransform(double m00, double m10, double m01, double m11,
double m02, double m12) {
at.setTransform(m00, m10, m01, m11, m02, m12);
}
@Override
public void concatenate(GAffineTransform a) {
at.concatenate(((GAffineTransformD) a).getImpl());
}
@Override
public double getScaleX() {
return at.getScaleX();
}
@Override
public double getScaleY() {
return at.getScaleY();
}
@Override
public double getShearX() {
return at.getShearX();
}
@Override
public double getShearY() {
return at.getShearY();
}
@Override
public double getTranslateX() {
return at.getTranslateX();
}
@Override
public double getTranslateY() {
return at.getTranslateY();
}
public static AffineTransform getAwtAffineTransform(GAffineTransform a) {
if (!(a instanceof GAffineTransformD)) {
return null;
}
return ((GAffineTransformD) a).getImpl();
}
@Override
public GShape createTransformedShape(GShape shape) {
Shape ret = null;
ret = at.createTransformedShape(GGenericShapeD.getAwtShape(shape));
return new GGenericShapeD(ret);
}
@Override
public GPoint2D transform(GPoint2D p, GPoint2D p2) {
Point2D point;
Point2D point2;
if (p instanceof GPoint2DD) {
point = ((GPoint2DD) p).getAwtPoint2D();
} else {
point = GPoint2DD.newAwtPoint2D(p);
}
if (p2 instanceof GPoint2DD) {
point2 = ((GPoint2DD) p2).getAwtPoint2D();
} else {
point2 = GPoint2DD.newAwtPoint2D(p2);
}
at.transform(point, point2);
p2.setX(point2.getX());
p2.setY(point2.getY());
return p2;
}
@Override
public void transform(double[] labelCoords, int i, double[] labelCoords2,
int j, int k) {
at.transform(labelCoords, i, labelCoords2, j, k);
}
@Override
public GAffineTransform createInverse() throws Exception {
return new GAffineTransformD(at.createInverse());
}
@Override
public void scale(double xscale, double d) {
at.scale(xscale, d);
}
@Override
public void translate(double ax, double ay) {
at.translate(ax, ay);
}
// @Override
// public void transform(float[] srcPts, int srcOff, float[] dstPts,
// int dstOff, int numPts) {
// at.transform(srcPts, srcOff, dstPts, dstOff, numPts);
//
// }
// @Override
// public void transform(float[] srcPts, int srcOff, double[] dstPts,
// int dstOff, int numPts) {
// at.transform(srcPts, srcOff, dstPts, dstOff, numPts);
//
// }
// public void transform(double[] doubleCoords, int pointIdx, float[]
// coords,
// int j, int k) {
// at.transform(doubleCoords, pointIdx, coords, j, k);
//
// }
@Override
public void rotate(double theta) {
at.rotate(theta);
}
@Override
public boolean isIdentity() {
return at.isIdentity();
}
@Override
public void setToTranslation(double tx, double ty) {
at.setToTranslation(tx, ty);
}
@Override
public void setToScale(double sx, double sy) {
at.setToScale(sx, sy);
}
@Override
public void getMatrix(double[] flatmatrix) {
at.getMatrix(flatmatrix);
}
@Override
public void setToRotation(double theta) {
at.setToRotation(theta);
}
@Override
public void setToRotation(double theta, double x, double y) {
at.setToRotation(theta, x, y);
}
}