-
Notifications
You must be signed in to change notification settings - Fork 89
Expand file tree
/
Copy pathAbstractGrob.java
More file actions
103 lines (77 loc) · 2.62 KB
/
AbstractGrob.java
File metadata and controls
103 lines (77 loc) · 2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package nodebox.graphics;
import java.awt.*;
import java.awt.geom.AffineTransform;
public abstract class AbstractGrob implements Grob {
private TransformDelegate transformDelegate = DefaultTransformDelegate.getDefaultDelegate();
private Transform transform;
private AffineTransform savedTransform;
//// Constructors ////
protected AbstractGrob() {
transform = new Transform();
}
protected AbstractGrob(AbstractGrob g) {
this.transform = g.transform == null ? new Transform() : g.transform.clone();
}
//// Transformations ////
public Transform getTransform() {
return transform;
}
public void setTransform(Transform transform) {
this.transform = transform;
}
public void transform(Transform t) {
this.transform.append(t);
}
public void appendTransform(Transform transform) {
this.transform.append(transform);
}
public void prependTransform(Transform transform) {
this.transform.prepend(transform);
}
public void translate(float tx, float ty) {
Transform t = Transform.translated(tx, ty);
transformDelegate.transform(this, t);
}
public void rotate(float degrees) {
Transform t = Transform.rotated(degrees);
transformDelegate.transform(this, t);
}
public void rotateRadians(float radians) {
Transform t = Transform.rotatedRadians(radians);
transformDelegate.transform(this, t);
}
public void scale(float scale) {
Transform t = Transform.scaled(scale);
transformDelegate.transform(this, t);
}
public void scale(float sx, float sy) {
Transform t = Transform.scaled(sx, sy);
transformDelegate.transform(this, t);
}
public void skew(float skew) {
Transform t = Transform.skewed(skew);
transformDelegate.transform(this, t);
}
public void skew(float kx, float ky) {
Transform t = Transform.skewed(kx, ky);
transformDelegate.transform(this, t);
}
//// Graphics context ////
protected void saveTransform(Graphics2D g) {
assert (savedTransform == null);
savedTransform = new AffineTransform(g.getTransform());
}
protected void restoreTransform(Graphics2D g) {
assert (savedTransform != null);
g.setTransform(savedTransform);
savedTransform = null;
}
public TransformDelegate getTransformDelegate() {
return transformDelegate;
}
public void setTransformDelegate(TransformDelegate d) {
transformDelegate = d;
}
//// Object methods ////
public abstract Grob clone();
}