\r
//javadoc:Range\r
public class Range {\r
- \r
- public int start, end;\r
+ \r
+ public int start, end;\r
\r
- public Range(int s, int e) {\r
- this.start = s;\r
- this.end = e;\r
- }\r
+ public Range(int s, int e) {\r
+ this.start = s;\r
+ this.end = e;\r
+ }\r
\r
- public Range() {\r
- this(0, 0);\r
+ public Range() {\r
+ this(0, 0);\r
+ }\r
+ public Range(double[] vals) {\r
+ this();\r
+ set(vals);\r
+ }\r
+ public void set(double[] vals) {\r
+ if(vals!=null) {\r
+ start = vals.length>0 ? (int)vals[0] : 0;\r
+ end = vals.length>1 ? (int)vals[1] : 0;\r
+ } else {\r
+ start = 0;\r
+ end = 0;\r
}\r
\r
- public int size() {\r
- return end-start;\r
- }\r
+ }\r
\r
- public boolean empty() {\r
- return start==end;\r
- }\r
+ public int size() {\r
+ return end-start;\r
+ }\r
\r
- public static Range all() {\r
- return new Range(Integer.MIN_VALUE , Integer.MAX_VALUE);\r
- }\r
+ public boolean empty() {\r
+ return start==end;\r
+ }\r
\r
- public Range intersection(Range r1) {\r
- Range r = new Range(Math.max(r1.start, this.start), Math.min(r1.end, this.end));\r
- r.end = Math.max(r.end, r.start);\r
- return r;\r
- }\r
- public Range shift(int delta) {\r
- return new Range(start+delta, end+delta);\r
- }\r
- \r
- \r
- public Range clone() {\r
- return new Range(start, end);\r
- }\r
- \r
- @Override\r
- public int hashCode() {\r
- final int prime = 31;\r
- int result = 1;\r
- long temp;\r
- temp = Double.doubleToLongBits(start);\r
- result = prime * result + (int) (temp ^ (temp >>> 32));\r
- temp = Double.doubleToLongBits(end);\r
- result = prime * result + (int) (temp ^ (temp >>> 32));\r
- return result;\r
- }\r
+ public static Range all() {\r
+ return new Range(Integer.MIN_VALUE , Integer.MAX_VALUE);\r
+ }\r
\r
- @Override\r
- public boolean equals(Object obj) {\r
- if (this == obj) return true;\r
- if (!(obj instanceof Range)) return false;\r
- Range it = (Range) obj;\r
- return start == it.start && end == it.end;\r
- }\r
+ public Range intersection(Range r1) {\r
+ Range r = new Range(Math.max(r1.start, this.start), Math.min(r1.end, this.end));\r
+ r.end = Math.max(r.end, r.start);\r
+ return r;\r
+ }\r
+ public Range shift(int delta) {\r
+ return new Range(start+delta, end+delta);\r
+ }\r
+ \r
+ \r
+ public Range clone() {\r
+ return new Range(start, end);\r
+ }\r
+ \r
+ @Override\r
+ public int hashCode() {\r
+ final int prime = 31;\r
+ int result = 1;\r
+ long temp;\r
+ temp = Double.doubleToLongBits(start);\r
+ result = prime * result + (int) (temp ^ (temp >>> 32));\r
+ temp = Double.doubleToLongBits(end);\r
+ result = prime * result + (int) (temp ^ (temp >>> 32));\r
+ return result;\r
+ }\r
\r
- @Override\r
- public String toString() {\r
- if (this == null) return "null";\r
- return "[" + start + ", " + end + ")";\r
- }\r
+ @Override\r
+ public boolean equals(Object obj) {\r
+ if (this == obj) return true;\r
+ if (!(obj instanceof Range)) return false;\r
+ Range it = (Range) obj;\r
+ return start == it.start && end == it.end;\r
+ }\r
+\r
+ @Override\r
+ public String toString() {\r
+ if (this == null) return "null";\r
+ return "[" + start + ", " + end + ")";\r
+ }\r
}\r
}\r
\r
public RotatedRect(double[] vals) {\r
- this();\r
- if(vals!=null) {\r
- center.x = vals.length>0 ? (int)vals[0] : 0;\r
- center.x = vals.length>1 ? (int)vals[1] : 0;\r
- size.width = vals.length>2 ? (int)vals[2] : 0;\r
- size.height = vals.length>3 ? (int)vals[3] : 0;\r
- angle = vals.length>4 ? (int)vals[4] : 0;\r
- }\r
+ this();\r
+ set(vals);\r
+ }\r
+ public void set(double[] vals) {\r
+ if(vals!=null) {\r
+ center.x = vals.length>0 ? (int)vals[0] : 0;\r
+ center.x = vals.length>1 ? (int)vals[1] : 0;\r
+ size.width = vals.length>2 ? (int)vals[2] : 0;\r
+ size.height = vals.length>3 ? (int)vals[3] : 0;\r
+ angle = vals.length>4 ? (int)vals[4] : 0;\r
+ } else {\r
+ center.x = 0;\r
+ center.x = 0;\r
+ size.width = 0;\r
+ size.height = 0;\r
+ angle = 0;\r
+ }\r
}\r
\r
public void points(Point pt[])\r