27ed3e70ca00abdc5a49dfd2a1fa9fa0da58db71
[slipway.git] / src / edu / berkeley / slipway / gui / R.java
1 package edu.berkeley.slipway.gui;
2
3 import com.atmel.fpslic.*;
4 import java.awt.geom.*;
5
6 public class R {
7
8     private double x1, x2, y1, y2;
9     public R(double x1, double y1, double x2, double y2) {
10         this.x1 = x1;
11         this.x2 = x2;
12         this.y1 = y1;
13         this.y2 = y2;
14     }
15
16     public double getWidth() { return Math.abs(x2-x1); }
17     public double getHeight() { return Math.abs(y2-y1); }
18     public double minx() { return Math.min(x1, x2); }
19     public double miny() { return Math.min(y1, y2); }
20     public double maxx() { return Math.max(x1, x2); }
21     public double maxy() { return Math.max(y1, y2); }
22     public double cx() { return (x1+x2)/2; }
23     public double cy() { return (y1+y2)/2; }
24     public double width() { return Math.abs(x2-x1); }
25     public double height() { return Math.abs(y2-y1); }
26
27     public void fill(G g) {
28         g.g.fill(new Rectangle2D.Double(minx(), miny(), width(), height()));
29     }
30     public void draw(G g) {
31         g.line(x1, y1, x1, y2);
32         g.line(x1, y2, x2, y2);
33         g.line(x2, y2, x2, y1);
34         g.line(x2, y1, x1, y1);
35     }
36
37     public boolean contains(P p) {
38         return p.x >= minx() && p.x < maxx() && p.y >= miny() && p.y < maxy();
39     }
40
41     public R plus(double minxplus, double minyplus, double maxxplus, double maxyplus) {
42         return new R(minx()+minxplus,
43                      miny()+minyplus,
44                      maxx()+maxxplus,
45                      maxy()+maxyplus);
46     }
47 }