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 } |
