1 package org.opencv.core;
2 
3 //javadoc:Range
4 public class Range {
5 
6     public int start, end;
7 
Range(int s, int e)8     public Range(int s, int e) {
9         this.start = s;
10         this.end = e;
11     }
12 
Range()13     public Range() {
14         this(0, 0);
15     }
16 
Range(double[] vals)17     public Range(double[] vals) {
18         set(vals);
19     }
20 
set(double[] vals)21     public void set(double[] vals) {
22         if (vals != null) {
23             start = vals.length > 0 ? (int) vals[0] : 0;
24             end = vals.length > 1 ? (int) vals[1] : 0;
25         } else {
26             start = 0;
27             end = 0;
28         }
29 
30     }
31 
size()32     public int size() {
33         return empty() ? 0 : end - start;
34     }
35 
empty()36     public boolean empty() {
37         return end <= start;
38     }
39 
all()40     public static Range all() {
41         return new Range(Integer.MIN_VALUE, Integer.MAX_VALUE);
42     }
43 
intersection(Range r1)44     public Range intersection(Range r1) {
45         Range r = new Range(Math.max(r1.start, this.start), Math.min(r1.end, this.end));
46         r.end = Math.max(r.end, r.start);
47         return r;
48     }
49 
shift(int delta)50     public Range shift(int delta) {
51         return new Range(start + delta, end + delta);
52     }
53 
clone()54     public Range clone() {
55         return new Range(start, end);
56     }
57 
58     @Override
hashCode()59     public int hashCode() {
60         final int prime = 31;
61         int result = 1;
62         long temp;
63         temp = Double.doubleToLongBits(start);
64         result = prime * result + (int) (temp ^ (temp >>> 32));
65         temp = Double.doubleToLongBits(end);
66         result = prime * result + (int) (temp ^ (temp >>> 32));
67         return result;
68     }
69 
70     @Override
equals(Object obj)71     public boolean equals(Object obj) {
72         if (this == obj) return true;
73         if (!(obj instanceof Range)) return false;
74         Range it = (Range) obj;
75         return start == it.start && end == it.end;
76     }
77 
78     @Override
toString()79     public String toString() {
80         return "[" + start + ", " + end + ")";
81     }
82 }
83