View Javadoc

1   package org.kite9.diagram.position;
2   
3   import java.awt.Dimension;
4   
5   /***
6    * This extends and is compatible with the awt dimension class, which is used for a
7    * lot of rendering.  
8    * This has double precision though and has internal scaling operations, as well
9    * as actions to allow you to apply operations to a specific direction.
10   * 
11   * @author robmoffat
12   *
13   */
14  public class Dimension2D extends Dimension {
15  
16  	private static final long serialVersionUID = -2042867297107289469L;
17  
18  	@Override
19  	public double getHeight() {
20  		return y;
21  	}
22  
23  	@Override
24  	public Dimension getSize() {
25  		return this;
26  	}
27  
28  	@Override
29  	public double getWidth() {
30  		return x;
31  	}
32  
33  	@Override
34  	public void setSize(Dimension arg0) {
35  		this.x = arg0.getWidth();
36  		this.y = arg0.getHeight();
37  		setInts();
38  	}
39  
40  	@Override
41  	public void setSize(double x, double y) {
42  		this.x = x;
43  		this.y = y;
44  		setInts();
45  	}
46  
47  	@Override
48  	public void setSize(int x, int y) {
49  		this.x = x;
50  		this.y = y;
51  		setInts();
52  	}
53  
54  	double x;
55  	double y;
56  	
57  	@Override
58  	public boolean equals(Object obj) {
59  		if (obj instanceof Dimension2D) {
60  			Dimension2D d2d = (Dimension2D) obj;
61  			return (x==d2d.x) && (y==d2d.y);
62  		}
63  		return false;
64  	}
65  
66  	public Dimension2D() {
67  		
68  	}
69  	
70  	public Dimension2D(double x, double y) {
71  		this.x = x;
72  		this.y = y;
73  		setInts();
74  	}
75  	
76  	public Dimension2D(Dimension2D clone) {
77  		this(clone.x, clone.y);
78  		setInts();
79  	}
80  	
81  	private void setInts() {
82  		this.width = (int) x;
83  		this.height = (int) y;
84  	}
85  
86  	public Dimension2D divide(Dimension2D by) {
87  		Dimension2D d2 = new Dimension2D();
88  		d2.x = x / by.x;
89  		d2.y = y / by.y;
90  		d2.setInts();
91  		return d2;
92  	}
93  	
94  	public Dimension2D multiply(Dimension2D by) {
95  		Dimension2D d2 = new Dimension2D();
96  		d2.x = x * by.x;
97  		d2.y = y * by.y;
98  		d2.setInts();
99  		return d2;
100 	}
101 	
102 	public Dimension2D multiply(double by) {
103 		Dimension2D d2 = new Dimension2D();
104 		d2.x = x * by;
105 		d2.y = y * by;
106 		d2.setInts();
107 		return d2;
108 	}
109 	
110 	
111 	public Dimension2D roundUpTo(Dimension2D factor) {
112 		Dimension2D d2 = new Dimension2D();
113 		d2.x = Math.ceil(x / factor.x) * factor.x;
114 		d2.y = Math.ceil(y / factor.y) * factor.y;
115 		d2.setInts();
116 		return d2;
117 	}
118 	
119 	@Override
120 	public String toString() {
121 		return "["+x+","+y+"]";
122 	}
123 
124 	public Dimension2D add(Dimension2D by) {
125 		Dimension2D d2 = new Dimension2D();
126 		d2.x = x + by.x;
127 		d2.y = y + by.y;
128 		d2.setInts();
129 		return d2;
130 	}
131 	
132 	public Dimension2D minus(Dimension2D by) {
133 		Dimension2D d2 = new Dimension2D();
134 		d2.x = x - by.x;
135 		d2.y = y - by.y;
136 		d2.setInts();
137 		return d2;
138 	}
139 	
140 	public double x() {
141 		return x;
142 	}
143 	
144 	public double y() { 
145 		return y;
146 	}
147 
148 	public void setX(double x) {
149 		this.x = x;
150 		setInts();
151 	}
152 
153 	public void setY(double y) {
154 		this.y = y;
155 		setInts();
156 	}
157 	
158 	public void increaseY(double y) {
159 		this.y += y;
160 		setInts();
161 	}
162 	
163 	public void increaseX(double x) {
164 		this.x += x;
165 		setInts();
166 	}
167 }