package nodebox.graphics;
public abstract class AbstractTransformable implements Grob {
private TransformDelegate transformDelegate = DefaultTransformDelegate.getDefaultDelegate();
private Transform transform;
//// Transformations ////
public void translate(double tx, double ty) {
Transform t = Transform.translated(tx, ty);
transformDelegate.transform(this, t);
}
public void rotate(double degrees) {
Transform t = Transform.rotated(degrees);
transformDelegate.transform(this, t);
}
public void rotateRadians(double radians) {
Transform t = Transform.rotatedRadians(radians);
transformDelegate.transform(this, t);
}
public void scale(double scale) {
Transform t = Transform.scaled(scale);
transformDelegate.transform(this, t);
}
public void scale(double sx, double sy) {
Transform t = Transform.scaled(sx, sy);
transformDelegate.transform(this, t);
}
public void skew(double skew) {
Transform t = Transform.skewed(skew);
transformDelegate.transform(this, t);
}
public void skew(double kx, double ky) {
Transform t = Transform.skewed(kx, ky);
transformDelegate.transform(this, t);
}
public TransformDelegate getTransformDelegate() {
return transformDelegate;
}
public void setTransformDelegate(TransformDelegate d) {
transformDelegate = d;
}
public abstract Grob clone();
}