Mercurial > repos > pfrommolt > ngsrich
comparison NGSrich_0.5.5/src/datastructures/Frame.java @ 0:89ad0a9cca52 default tip
Uploaded
author | pfrommolt |
---|---|
date | Mon, 21 Nov 2011 08:12:19 -0500 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:89ad0a9cca52 |
---|---|
1 package datastructures; | |
2 | |
3 /** | |
4 * Used for various purposes. | |
5 * | |
6 * @author Ali Abdallah | |
7 * @version 01.2011 | |
8 * @since jdk 1.6.0 | |
9 */ | |
10 public class Frame { | |
11 | |
12 // Self explanatory. | |
13 protected int start; | |
14 protected int end; | |
15 protected int length; | |
16 | |
17 /** | |
18 * Constructs a frame with start position "start", length "length" and | |
19 * end position "start+length-1". | |
20 * @param start the start position of the frame. | |
21 * @param length the length of the frame. | |
22 */ | |
23 public Frame(int start, int length) { | |
24 this.start = start; end = start+length-1; | |
25 this.length = length; | |
26 } | |
27 | |
28 /** | |
29 * Verify if this frame overlaps the frame specified in the parameter. | |
30 * @param f the frame which potentially overlaps the calling frame. | |
31 * @return true if the two frames overlap each other and false otherwise. | |
32 */ | |
33 public boolean overlaps(Frame f){ | |
34 return (end >= f.start() && start < f.end()); | |
35 } | |
36 | |
37 /** | |
38 * Computes the size of the overlap area. | |
39 * @param f the frame overlapping the calling frame. | |
40 * @return the size of the overlap if an overlap exists and -1 otherwise. | |
41 */ | |
42 public int overlapSize(Frame f){ | |
43 if(this.overlaps(f)){ | |
44 int s = Math.max(start, f.start()); | |
45 int e = Math.min(end, f.end()); | |
46 return e-s+1; | |
47 } | |
48 return -1; | |
49 } | |
50 | |
51 /** | |
52 * Unify the calling frame with the frame specified in the parameter. | |
53 * @param f the frame to be unified with the calling frame. | |
54 * @return the union of the calling frame and f. | |
55 */ | |
56 public Frame unify(Frame f){ | |
57 return | |
58 new Frame(Math.min(this.start, f.start), | |
59 Math.max(this.end,f.end)-Math.min(this.start, f.start)+1); | |
60 } | |
61 | |
62 /** | |
63 * self explanatory | |
64 * @return start of the frame. | |
65 */ | |
66 public int start(){ | |
67 return start; | |
68 } | |
69 | |
70 /** | |
71 * self explanatory | |
72 * @return end of the frame. | |
73 */ | |
74 public int end(){ | |
75 return end; | |
76 } | |
77 | |
78 /** | |
79 * self explanatory | |
80 * @return length of the frame. | |
81 */ | |
82 public int length(){ | |
83 return length; | |
84 } | |
85 | |
86 /** | |
87 * Make a string representation of the frame. | |
88 * @return a string representation of the string. | |
89 */ | |
90 public String toString(){ | |
91 return start+":"+end; | |
92 } | |
93 | |
94 } |