Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / jalview / util / ShiftList.js
1 Clazz.declarePackage ("jalview.util");
2 Clazz.load (null, "jalview.util.ShiftList", ["java.util.ArrayList"], function () {
3 c$ = Clazz.decorateAsClass (function () {
4 this.shifts = null;
5 Clazz.instantialize (this, arguments);
6 }, jalview.util, "ShiftList");
7 Clazz.makeConstructor (c$, 
8 function () {
9 this.shifts =  new java.util.ArrayList ();
10 });
11 Clazz.defineMethod (c$, "addShift", 
12 function (pos, shift) {
13 {
14 var sidx = 0;
15 var rshift = null;
16 while (sidx < this.shifts.size () && (rshift = this.shifts.get (sidx))[0] < pos) {
17 sidx++;
18 }
19 if (sidx == this.shifts.size ()) {
20 this.shifts.add (sidx,  Clazz.newIntArray (-1, [pos, shift]));
21 } else {
22 rshift[1] += shift;
23 }}}, "~N,~N");
24 Clazz.defineMethod (c$, "shift", 
25 function (pos) {
26 if (this.shifts.size () == 0) {
27 return pos;
28 }var shifted = pos;
29 var sidx = 0;
30 var rshift;
31 while (sidx < this.shifts.size () && (rshift = (this.shifts.get (sidx++)))[0] <= pos) {
32 shifted += rshift[1];
33 }
34 return shifted;
35 }, "~N");
36 Clazz.defineMethod (c$, "clear", 
37 function () {
38 this.shifts.clear ();
39 });
40 Clazz.defineMethod (c$, "getInverse", 
41 function () {
42 var inverse =  new jalview.util.ShiftList ();
43 {
44 if (this.shifts != null) {
45 for (var sh, $sh = this.shifts.iterator (); $sh.hasNext () && ((sh = $sh.next ()) || true);) {
46 if (sh != null) {
47 inverse.shifts.add ( Clazz.newIntArray (-1, [sh[0], -sh[1]]));
48 }}
49 }}return inverse;
50 });
51 c$.parseMap = Clazz.defineMethod (c$, "parseMap", 
52 function (gapMap) {
53 var shiftList = null;
54 if (gapMap != null && gapMap.length > 0) {
55 shiftList =  new jalview.util.ShiftList ();
56 for (var i = 0, p = 0; i < gapMap.length; p++, i++) {
57 if (p != gapMap[i]) {
58 shiftList.addShift (p, gapMap[i] - p);
59 p = gapMap[i];
60 }}
61 }return shiftList;
62 }, "~A");
63 Clazz.defineMethod (c$, "getShifts", 
64 function () {
65 return this.shifts;
66 });
67 });