X-Git-Url: http://source.jalview.org/gitweb/?p=jalviewjs.git;a=blobdiff_plain;f=bin%2Fjalview%2Futil%2FMapList.js;h=e7281ac0212e0aff0f97690bbb0d4220ed7226d6;hp=ff777cc7ff8943aa7ffc454ae9be7a17bb5ed747;hb=7301a2415adab88038b291fc54caeeb3a5a47a44;hpb=6154cb57a6eac3bb1344b8342495f5bb701ee921 diff --git a/bin/jalview/util/MapList.js b/bin/jalview/util/MapList.js index ff777cc..e7281ac 100644 --- a/bin/jalview/util/MapList.js +++ b/bin/jalview/util/MapList.js @@ -1,409 +1,409 @@ -Clazz.declarePackage ("jalview.util"); -Clazz.load (["java.util.ArrayList"], "jalview.util.MapList", ["java.lang.StringBuilder", "java.util.Arrays"], function () { -c$ = Clazz.decorateAsClass (function () { -this.fromShifts = null; -this.toShifts = null; -this.fromRatio = 0; -this.toRatio = 0; -this.fromLowest = 0; -this.fromHighest = 0; -this.toLowest = 0; -this.toHighest = 0; -Clazz.instantialize (this, arguments); -}, jalview.util, "MapList"); -Clazz.prepareFields (c$, function () { -this.fromShifts = new java.util.ArrayList (); -this.toShifts = new java.util.ArrayList (); -}); -Clazz.overrideMethod (c$, "equals", -function (o) { -if (o == null || !(Clazz.instanceOf (o, jalview.util.MapList))) { -return false; -}var obj = o; -if (obj === this) { -return true; -}if (obj.fromRatio != this.fromRatio || obj.toRatio != this.toRatio || obj.fromShifts == null || obj.toShifts == null) { -return false; -}return java.util.Arrays.deepEquals (this.fromShifts.toArray (), obj.fromShifts.toArray ()) && java.util.Arrays.deepEquals (this.toShifts.toArray (), obj.toShifts.toArray ()); -}, "~O"); -Clazz.defineMethod (c$, "getFromRanges", -function () { -return this.fromShifts; -}); -Clazz.defineMethod (c$, "getToRanges", -function () { -return this.toShifts; -}); -c$.getRanges = Clazz.defineMethod (c$, "getRanges", -function (shifts) { -var rnges = Clazz.newIntArray (2 * shifts.size (), 0); -var i = 0; -for (var r, $r = shifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) { -rnges[i++] = r[0]; -rnges[i++] = r[1]; -} -return rnges; -}, "java.util.List"); -Clazz.defineMethod (c$, "getFromRatio", -function () { -return this.fromRatio; -}); -Clazz.defineMethod (c$, "getToRatio", -function () { -return this.toRatio; -}); -Clazz.defineMethod (c$, "getFromLowest", -function () { -return this.fromLowest; -}); -Clazz.defineMethod (c$, "getFromHighest", -function () { -return this.fromHighest; -}); -Clazz.defineMethod (c$, "getToLowest", -function () { -return this.toLowest; -}); -Clazz.defineMethod (c$, "getToHighest", -function () { -return this.toHighest; -}); -Clazz.makeConstructor (c$, -function (from, to, fromRatio, toRatio) { -this.fromRatio = fromRatio; -this.toRatio = toRatio; -this.fromLowest = from[0]; -this.fromHighest = from[1]; -for (var i = 0; i < from.length; i += 2) { -this.fromLowest = Math.min (this.fromLowest, from[i]); -this.fromHighest = Math.max (this.fromHighest, from[i + 1]); -this.fromShifts.add ( Clazz.newIntArray (-1, [from[i], from[i + 1]])); -} -this.toLowest = to[0]; -this.toHighest = to[1]; -for (var i = 0; i < to.length; i += 2) { -this.toLowest = Math.min (this.toLowest, to[i]); -this.toHighest = Math.max (this.toHighest, to[i + 1]); -this.toShifts.add ( Clazz.newIntArray (-1, [to[i], to[i + 1]])); -} -}, "~A,~A,~N,~N"); -Clazz.makeConstructor (c$, -function (map) { -this.fromLowest = map.fromLowest; -this.fromHighest = map.fromHighest; -this.toLowest = map.toLowest; -this.toHighest = map.toHighest; -this.fromRatio = map.fromRatio; -this.toRatio = map.toRatio; -if (map.fromShifts != null) { -for (var r, $r = map.fromShifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) { -this.fromShifts.add ( Clazz.newIntArray (-1, [r[0], r[1]])); -} -}if (map.toShifts != null) { -for (var r, $r = map.toShifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) { -this.toShifts.add ( Clazz.newIntArray (-1, [r[0], r[1]])); -} -}}, "jalview.util.MapList"); -Clazz.makeConstructor (c$, -function (fromRange, toRange, fromRatio, toRatio) { -this.fromShifts = fromRange; -this.toShifts = toRange; -this.fromRatio = fromRatio; -this.toRatio = toRatio; -this.fromLowest = 2147483647; -this.fromHighest = 0; -for (var range, $range = fromRange.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) { -this.fromLowest = Math.min (this.fromLowest, range[0]); -this.fromHighest = Math.max (this.fromHighest, range[1]); -} -this.toLowest = 2147483647; -this.toHighest = 0; -for (var range, $range = toRange.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) { -this.toLowest = Math.min (this.toLowest, range[0]); -this.toHighest = Math.max (this.toHighest, range[1]); -} -}, "java.util.List,java.util.List,~N,~N"); -Clazz.defineMethod (c$, "makeFromMap", -function () { -return this.posMap (this.fromShifts, this.fromRatio, this.toShifts, this.toRatio); -}); -Clazz.defineMethod (c$, "makeToMap", -function () { -return this.posMap (this.toShifts, this.toRatio, this.fromShifts, this.fromRatio); -}); -Clazz.defineMethod (c$, "posMap", -($fz = function (shiftTo, ratio, shiftFrom, toRatio) { -var iv = 0; -var ivSize = shiftTo.size (); -if (iv >= ivSize) { -return null; -}var intv = shiftTo.get (iv++); -var from = intv[0]; -var to = intv[1]; -if (from > to) { -from = intv[1]; -to = intv[0]; -}while (iv < ivSize) { -intv = shiftTo.get (iv++); -if (intv[0] < from) { -from = intv[0]; -}if (intv[1] < from) { -from = intv[1]; -}if (intv[0] > to) { -to = intv[0]; -}if (intv[1] > to) { -to = intv[1]; -}} -var tF = 0; -var tT = 0; -var mp = Clazz.newIntArray (to - from + 2, 0); -for (var i = 0; i < mp.length; i++) { -var m = jalview.util.MapList.shift (i + from, shiftTo, ratio, shiftFrom, toRatio); -if (m != null) { -if (i == 0) { -tF = tT = m[0]; -} else { -if (m[0] < tF) { -tF = m[0]; -}if (m[0] > tT) { -tT = m[0]; -}}}mp[i] = m; -} -var map = Clazz.newArray (-1, [ Clazz.newIntArray (-1, [from, to, tF, tT]), Clazz.newIntArray (to - from + 2, 0)]); -map[0][2] = tF; -map[0][3] = tT; -for (var i = 0; i < mp.length; i++) { -if (mp[i] != null) { -map[1][i] = mp[i][0] - tF; -} else { -map[1][i] = -1; -}} -return map; -}, $fz.isPrivate = true, $fz), "java.util.List,~N,java.util.List,~N"); -Clazz.defineMethod (c$, "shiftFrom", -function (pos) { -return jalview.util.MapList.shift (pos, this.fromShifts, this.fromRatio, this.toShifts, this.toRatio); -}, "~N"); -Clazz.defineMethod (c$, "shiftTo", -function (pos) { -return jalview.util.MapList.shift (pos, this.toShifts, this.toRatio, this.fromShifts, this.fromRatio); -}, "~N"); -c$.shift = Clazz.defineMethod (c$, "shift", -function (pos, shiftTo, fromRatio, shiftFrom, toRatio) { -var fromCount = jalview.util.MapList.countPos (shiftTo, pos); -if (fromCount == null) { -return null; -}var fromRemainder = (fromCount[0] - 1) % fromRatio; -var toCount = 1 + ((Clazz.doubleToInt ((fromCount[0] - 1) / fromRatio)) * toRatio); -var toPos = jalview.util.MapList.countToPos (shiftFrom, toCount); -if (toPos == null) { -return null; -}return Clazz.newIntArray (-1, [toPos[0], fromRemainder, toPos[1]]); -}, "~N,java.util.List,~N,java.util.List,~N"); -c$.countPos = Clazz.defineMethod (c$, "countPos", -function (shiftTo, pos) { -var count = 0; -var intv; -var iv = 0; -var ivSize = shiftTo.size (); -while (iv < ivSize) { -intv = shiftTo.get (iv++); -if (intv[0] <= intv[1]) { -if (pos >= intv[0] && pos <= intv[1]) { -return Clazz.newIntArray (-1, [count + pos - intv[0] + 1, 1]); -} else { -count += intv[1] - intv[0] + 1; -}} else { -if (pos >= intv[1] && pos <= intv[0]) { -return Clazz.newIntArray (-1, [count + intv[0] - pos + 1, -1]); -} else { -count += intv[0] - intv[1] + 1; -}}} -return null; -}, "java.util.List,~N"); -c$.countToPos = Clazz.defineMethod (c$, "countToPos", -function (shiftFrom, pos) { -var count = 0; -var diff = 0; -var iv = 0; -var ivSize = shiftFrom.size (); -var intv = Clazz.newIntArray (-1, [0, 0]); -while (iv < ivSize) { -intv = shiftFrom.get (iv++); -diff = intv[1] - intv[0]; -if (diff >= 0) { -if (pos <= count + 1 + diff) { -return Clazz.newIntArray (-1, [pos - count - 1 + intv[0], 1]); -} else { -count += 1 + diff; -}} else { -if (pos <= count + 1 - diff) { -return Clazz.newIntArray (-1, [intv[0] - (pos - count - 1), -1]); -} else { -count += 1 - diff; -}}} -return null; -}, "java.util.List,~N"); -Clazz.defineMethod (c$, "locateInFrom", -function (start, end) { -var fromStart = this.shiftTo (start); -var fromEnd = this.shiftTo (end); -return jalview.util.MapList.getIntervals (this.fromShifts, fromStart, fromEnd, this.fromRatio); -}, "~N,~N"); -Clazz.defineMethod (c$, "locateInTo", -function (start, end) { -var toStart = this.shiftFrom (start); -var toEnd = this.shiftFrom (end); -return jalview.util.MapList.getIntervals (this.toShifts, toStart, toEnd, this.toRatio); -}, "~N,~N"); -c$.getIntervals = Clazz.defineMethod (c$, "getIntervals", -function (shiftFrom, fromStart, fromEnd, fromRatio2) { -if (fromStart == null || fromEnd == null) { -return null; -}var startpos; -var endpos; -startpos = fromStart[0]; -endpos = fromEnd[0]; -var endindx = (fromRatio2 - 1); -var intv = 0; -var intvSize = shiftFrom.size (); -var iv; -var i = 0; -var fs = -1; -var fe_s = -1; -var fe = -1; -while (intv < intvSize && (fs == -1 || fe == -1)) { -iv = shiftFrom.get (intv++); -if (fe_s > -1) { -endpos = iv[0]; -endindx--; -}if (iv[0] <= iv[1]) { -if (fs == -1 && startpos >= iv[0] && startpos <= iv[1]) { -fs = i; -}if (endpos >= iv[0] && endpos <= iv[1]) { -if (fe_s == -1) { -fe_s = i; -}if (fe_s != -1) { -if (endpos + endindx <= iv[1]) { -fe = i; -endpos = endpos + endindx; -} else { -endindx -= iv[1] - endpos; -}}}} else { -if (fs == -1 && startpos <= iv[0] && startpos >= iv[1]) { -fs = i; -}if (endpos <= iv[0] && endpos >= iv[1]) { -if (fe_s == -1) { -fe_s = i; -}if (fe_s != -1) { -if (endpos - endindx >= iv[1]) { -fe = i; -endpos = endpos - endindx; -} else { -endindx -= endpos - iv[1]; -}}}}i++; -} -if (fs == fe && fe == -1) { -return null; -}var ranges = new java.util.ArrayList (); -if (fs <= fe) { -intv = fs; -i = fs; -iv = shiftFrom.get (intv++); -iv = Clazz.newIntArray (-1, [iv[0], iv[1]]); -if (i == fs) { -iv[0] = startpos; -}while (i != fe) { -ranges.add (iv); -iv = shiftFrom.get (intv++); -iv = Clazz.newIntArray (-1, [iv[0], iv[1]]); -i++; -} -if (i == fe) { -iv[1] = endpos; -}ranges.add (iv); -} else { -i = shiftFrom.size () - 1; -while (i > fs) { -i--; -} -iv = shiftFrom.get (i); -iv = Clazz.newIntArray (-1, [iv[1], iv[0]]); -if (i == fs) { -iv[0] = startpos; -}while (--i != fe) { -ranges.add (iv); -iv = shiftFrom.get (i); -iv = Clazz.newIntArray (-1, [iv[1], iv[0]]); -} -if (i == fe) { -iv[1] = endpos; -}ranges.add (iv); -}var range = null; -if (ranges != null && ranges.size () > 0) { -range = Clazz.newIntArray (ranges.size () * 2, 0); -intv = 0; -intvSize = ranges.size (); -i = 0; -while (intv < intvSize) { -iv = ranges.get (intv); -range[i++] = iv[0]; -range[i++] = iv[1]; -ranges.set (intv++, null); -} -}return range; -}, "java.util.List,~A,~A,~N"); -Clazz.defineMethod (c$, "getToPosition", -function (mpos) { -var mp = this.shiftTo (mpos); -if (mp != null) { -return mp[0]; -}return mpos; -}, "~N"); -Clazz.defineMethod (c$, "getToWord", -function (mpos) { -var mp = this.shiftTo (mpos); -if (mp != null) { -return Clazz.newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.getFromRatio () - 1)]); -}return null; -}, "~N"); -Clazz.defineMethod (c$, "getMappedPosition", -function (pos) { -var mp = this.shiftFrom (pos); -if (mp != null) { -return mp[0]; -}return pos; -}, "~N"); -Clazz.defineMethod (c$, "getMappedWord", -function (pos) { -var mp = this.shiftFrom (pos); -if (mp != null) { -return Clazz.newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.getToRatio () - 1)]); -}return null; -}, "~N"); -Clazz.defineMethod (c$, "getInverse", -function () { -return new jalview.util.MapList (this.getToRanges (), this.getFromRanges (), this.getToRatio (), this.getFromRatio ()); -}); -Clazz.defineMethod (c$, "containsEither", -function (local, map) { -if (local) { -return ((this.getFromLowest () >= map.getFromLowest () && this.getFromHighest () <= map.getFromHighest ()) || (this.getFromLowest () <= map.getFromLowest () && this.getFromHighest () >= map.getFromHighest ())); -} else { -return ((this.getToLowest () >= map.getToLowest () && this.getToHighest () <= map.getToHighest ()) || (this.getToLowest () <= map.getToLowest () && this.getToHighest () >= map.getToHighest ())); -}}, "~B,jalview.util.MapList"); -Clazz.overrideMethod (c$, "toString", -function () { -var sb = new StringBuilder (64); -sb.append ("From (").append (this.fromRatio).append (":").append (this.toRatio).append (") ["); -for (var shift, $shift = this.fromShifts.iterator (); $shift.hasNext () && ((shift = $shift.next ()) || true);) { -sb.append (" ").append (java.util.Arrays.toString (shift)); -} -sb.append (" ] To ["); -for (var shift, $shift = this.toShifts.iterator (); $shift.hasNext () && ((shift = $shift.next ()) || true);) { -sb.append (" ").append (java.util.Arrays.toString (shift)); -} -sb.append (" ]"); -return sb.toString (); -}); -}); +Clazz.declarePackage ("jalview.util"); +Clazz.load (["java.util.ArrayList"], "jalview.util.MapList", ["java.lang.StringBuilder", "java.util.Arrays"], function () { +c$ = Clazz.decorateAsClass (function () { +this.fromShifts = null; +this.toShifts = null; +this.fromRatio = 0; +this.toRatio = 0; +this.fromLowest = 0; +this.fromHighest = 0; +this.toLowest = 0; +this.toHighest = 0; +Clazz.instantialize (this, arguments); +}, jalview.util, "MapList"); +Clazz.prepareFields (c$, function () { +this.fromShifts = new java.util.ArrayList (); +this.toShifts = new java.util.ArrayList (); +}); +Clazz.overrideMethod (c$, "equals", +function (o) { +if (o == null || !(Clazz.instanceOf (o, jalview.util.MapList))) { +return false; +}var obj = o; +if (obj === this) { +return true; +}if (obj.fromRatio != this.fromRatio || obj.toRatio != this.toRatio || obj.fromShifts == null || obj.toShifts == null) { +return false; +}return java.util.Arrays.deepEquals (this.fromShifts.toArray (), obj.fromShifts.toArray ()) && java.util.Arrays.deepEquals (this.toShifts.toArray (), obj.toShifts.toArray ()); +}, "~O"); +Clazz.defineMethod (c$, "getFromRanges", +function () { +return this.fromShifts; +}); +Clazz.defineMethod (c$, "getToRanges", +function () { +return this.toShifts; +}); +c$.getRanges = Clazz.defineMethod (c$, "getRanges", +function (shifts) { +var rnges = Clazz.newIntArray (2 * shifts.size (), 0); +var i = 0; +for (var r, $r = shifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) { +rnges[i++] = r[0]; +rnges[i++] = r[1]; +} +return rnges; +}, "java.util.List"); +Clazz.defineMethod (c$, "getFromRatio", +function () { +return this.fromRatio; +}); +Clazz.defineMethod (c$, "getToRatio", +function () { +return this.toRatio; +}); +Clazz.defineMethod (c$, "getFromLowest", +function () { +return this.fromLowest; +}); +Clazz.defineMethod (c$, "getFromHighest", +function () { +return this.fromHighest; +}); +Clazz.defineMethod (c$, "getToLowest", +function () { +return this.toLowest; +}); +Clazz.defineMethod (c$, "getToHighest", +function () { +return this.toHighest; +}); +Clazz.makeConstructor (c$, +function (from, to, fromRatio, toRatio) { +this.fromRatio = fromRatio; +this.toRatio = toRatio; +this.fromLowest = from[0]; +this.fromHighest = from[1]; +for (var i = 0; i < from.length; i += 2) { +this.fromLowest = Math.min (this.fromLowest, from[i]); +this.fromHighest = Math.max (this.fromHighest, from[i + 1]); +this.fromShifts.add ( Clazz.newIntArray (-1, [from[i], from[i + 1]])); +} +this.toLowest = to[0]; +this.toHighest = to[1]; +for (var i = 0; i < to.length; i += 2) { +this.toLowest = Math.min (this.toLowest, to[i]); +this.toHighest = Math.max (this.toHighest, to[i + 1]); +this.toShifts.add ( Clazz.newIntArray (-1, [to[i], to[i + 1]])); +} +}, "~A,~A,~N,~N"); +Clazz.makeConstructor (c$, +function (map) { +this.fromLowest = map.fromLowest; +this.fromHighest = map.fromHighest; +this.toLowest = map.toLowest; +this.toHighest = map.toHighest; +this.fromRatio = map.fromRatio; +this.toRatio = map.toRatio; +if (map.fromShifts != null) { +for (var r, $r = map.fromShifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) { +this.fromShifts.add ( Clazz.newIntArray (-1, [r[0], r[1]])); +} +}if (map.toShifts != null) { +for (var r, $r = map.toShifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) { +this.toShifts.add ( Clazz.newIntArray (-1, [r[0], r[1]])); +} +}}, "jalview.util.MapList"); +Clazz.makeConstructor (c$, +function (fromRange, toRange, fromRatio, toRatio) { +this.fromShifts = fromRange; +this.toShifts = toRange; +this.fromRatio = fromRatio; +this.toRatio = toRatio; +this.fromLowest = 2147483647; +this.fromHighest = 0; +for (var range, $range = fromRange.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) { +this.fromLowest = Math.min (this.fromLowest, range[0]); +this.fromHighest = Math.max (this.fromHighest, range[1]); +} +this.toLowest = 2147483647; +this.toHighest = 0; +for (var range, $range = toRange.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) { +this.toLowest = Math.min (this.toLowest, range[0]); +this.toHighest = Math.max (this.toHighest, range[1]); +} +}, "java.util.List,java.util.List,~N,~N"); +Clazz.defineMethod (c$, "makeFromMap", +function () { +return this.posMap (this.fromShifts, this.fromRatio, this.toShifts, this.toRatio); +}); +Clazz.defineMethod (c$, "makeToMap", +function () { +return this.posMap (this.toShifts, this.toRatio, this.fromShifts, this.fromRatio); +}); +Clazz.defineMethod (c$, "posMap", +($fz = function (shiftTo, ratio, shiftFrom, toRatio) { +var iv = 0; +var ivSize = shiftTo.size (); +if (iv >= ivSize) { +return null; +}var intv = shiftTo.get (iv++); +var from = intv[0]; +var to = intv[1]; +if (from > to) { +from = intv[1]; +to = intv[0]; +}while (iv < ivSize) { +intv = shiftTo.get (iv++); +if (intv[0] < from) { +from = intv[0]; +}if (intv[1] < from) { +from = intv[1]; +}if (intv[0] > to) { +to = intv[0]; +}if (intv[1] > to) { +to = intv[1]; +}} +var tF = 0; +var tT = 0; +var mp = Clazz.newIntArray (to - from + 2, 0); +for (var i = 0; i < mp.length; i++) { +var m = jalview.util.MapList.shift (i + from, shiftTo, ratio, shiftFrom, toRatio); +if (m != null) { +if (i == 0) { +tF = tT = m[0]; +} else { +if (m[0] < tF) { +tF = m[0]; +}if (m[0] > tT) { +tT = m[0]; +}}}mp[i] = m; +} +var map = Clazz.newArray (-1, [ Clazz.newIntArray (-1, [from, to, tF, tT]), Clazz.newIntArray (to - from + 2, 0)]); +map[0][2] = tF; +map[0][3] = tT; +for (var i = 0; i < mp.length; i++) { +if (mp[i] != null) { +map[1][i] = mp[i][0] - tF; +} else { +map[1][i] = -1; +}} +return map; +}, $fz.isPrivate = true, $fz), "java.util.List,~N,java.util.List,~N"); +Clazz.defineMethod (c$, "shiftFrom", +function (pos) { +return jalview.util.MapList.shift (pos, this.fromShifts, this.fromRatio, this.toShifts, this.toRatio); +}, "~N"); +Clazz.defineMethod (c$, "shiftTo", +function (pos) { +return jalview.util.MapList.shift (pos, this.toShifts, this.toRatio, this.fromShifts, this.fromRatio); +}, "~N"); +c$.shift = Clazz.defineMethod (c$, "shift", +function (pos, shiftTo, fromRatio, shiftFrom, toRatio) { +var fromCount = jalview.util.MapList.countPos (shiftTo, pos); +if (fromCount == null) { +return null; +}var fromRemainder = (fromCount[0] - 1) % fromRatio; +var toCount = 1 + ((Clazz.doubleToInt ((fromCount[0] - 1) / fromRatio)) * toRatio); +var toPos = jalview.util.MapList.countToPos (shiftFrom, toCount); +if (toPos == null) { +return null; +}return Clazz.newIntArray (-1, [toPos[0], fromRemainder, toPos[1]]); +}, "~N,java.util.List,~N,java.util.List,~N"); +c$.countPos = Clazz.defineMethod (c$, "countPos", +function (shiftTo, pos) { +var count = 0; +var intv; +var iv = 0; +var ivSize = shiftTo.size (); +while (iv < ivSize) { +intv = shiftTo.get (iv++); +if (intv[0] <= intv[1]) { +if (pos >= intv[0] && pos <= intv[1]) { +return Clazz.newIntArray (-1, [count + pos - intv[0] + 1, 1]); +} else { +count += intv[1] - intv[0] + 1; +}} else { +if (pos >= intv[1] && pos <= intv[0]) { +return Clazz.newIntArray (-1, [count + intv[0] - pos + 1, -1]); +} else { +count += intv[0] - intv[1] + 1; +}}} +return null; +}, "java.util.List,~N"); +c$.countToPos = Clazz.defineMethod (c$, "countToPos", +function (shiftFrom, pos) { +var count = 0; +var diff = 0; +var iv = 0; +var ivSize = shiftFrom.size (); +var intv = Clazz.newIntArray (-1, [0, 0]); +while (iv < ivSize) { +intv = shiftFrom.get (iv++); +diff = intv[1] - intv[0]; +if (diff >= 0) { +if (pos <= count + 1 + diff) { +return Clazz.newIntArray (-1, [pos - count - 1 + intv[0], 1]); +} else { +count += 1 + diff; +}} else { +if (pos <= count + 1 - diff) { +return Clazz.newIntArray (-1, [intv[0] - (pos - count - 1), -1]); +} else { +count += 1 - diff; +}}} +return null; +}, "java.util.List,~N"); +Clazz.defineMethod (c$, "locateInFrom", +function (start, end) { +var fromStart = this.shiftTo (start); +var fromEnd = this.shiftTo (end); +return jalview.util.MapList.getIntervals (this.fromShifts, fromStart, fromEnd, this.fromRatio); +}, "~N,~N"); +Clazz.defineMethod (c$, "locateInTo", +function (start, end) { +var toStart = this.shiftFrom (start); +var toEnd = this.shiftFrom (end); +return jalview.util.MapList.getIntervals (this.toShifts, toStart, toEnd, this.toRatio); +}, "~N,~N"); +c$.getIntervals = Clazz.defineMethod (c$, "getIntervals", +function (shiftFrom, fromStart, fromEnd, fromRatio2) { +if (fromStart == null || fromEnd == null) { +return null; +}var startpos; +var endpos; +startpos = fromStart[0]; +endpos = fromEnd[0]; +var endindx = (fromRatio2 - 1); +var intv = 0; +var intvSize = shiftFrom.size (); +var iv; +var i = 0; +var fs = -1; +var fe_s = -1; +var fe = -1; +while (intv < intvSize && (fs == -1 || fe == -1)) { +iv = shiftFrom.get (intv++); +if (fe_s > -1) { +endpos = iv[0]; +endindx--; +}if (iv[0] <= iv[1]) { +if (fs == -1 && startpos >= iv[0] && startpos <= iv[1]) { +fs = i; +}if (endpos >= iv[0] && endpos <= iv[1]) { +if (fe_s == -1) { +fe_s = i; +}if (fe_s != -1) { +if (endpos + endindx <= iv[1]) { +fe = i; +endpos = endpos + endindx; +} else { +endindx -= iv[1] - endpos; +}}}} else { +if (fs == -1 && startpos <= iv[0] && startpos >= iv[1]) { +fs = i; +}if (endpos <= iv[0] && endpos >= iv[1]) { +if (fe_s == -1) { +fe_s = i; +}if (fe_s != -1) { +if (endpos - endindx >= iv[1]) { +fe = i; +endpos = endpos - endindx; +} else { +endindx -= endpos - iv[1]; +}}}}i++; +} +if (fs == fe && fe == -1) { +return null; +}var ranges = new java.util.ArrayList (); +if (fs <= fe) { +intv = fs; +i = fs; +iv = shiftFrom.get (intv++); +iv = Clazz.newIntArray (-1, [iv[0], iv[1]]); +if (i == fs) { +iv[0] = startpos; +}while (i != fe) { +ranges.add (iv); +iv = shiftFrom.get (intv++); +iv = Clazz.newIntArray (-1, [iv[0], iv[1]]); +i++; +} +if (i == fe) { +iv[1] = endpos; +}ranges.add (iv); +} else { +i = shiftFrom.size () - 1; +while (i > fs) { +i--; +} +iv = shiftFrom.get (i); +iv = Clazz.newIntArray (-1, [iv[1], iv[0]]); +if (i == fs) { +iv[0] = startpos; +}while (--i != fe) { +ranges.add (iv); +iv = shiftFrom.get (i); +iv = Clazz.newIntArray (-1, [iv[1], iv[0]]); +} +if (i == fe) { +iv[1] = endpos; +}ranges.add (iv); +}var range = null; +if (ranges != null && ranges.size () > 0) { +range = Clazz.newIntArray (ranges.size () * 2, 0); +intv = 0; +intvSize = ranges.size (); +i = 0; +while (intv < intvSize) { +iv = ranges.get (intv); +range[i++] = iv[0]; +range[i++] = iv[1]; +ranges.set (intv++, null); +} +}return range; +}, "java.util.List,~A,~A,~N"); +Clazz.defineMethod (c$, "getToPosition", +function (mpos) { +var mp = this.shiftTo (mpos); +if (mp != null) { +return mp[0]; +}return mpos; +}, "~N"); +Clazz.defineMethod (c$, "getToWord", +function (mpos) { +var mp = this.shiftTo (mpos); +if (mp != null) { +return Clazz.newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.getFromRatio () - 1)]); +}return null; +}, "~N"); +Clazz.defineMethod (c$, "getMappedPosition", +function (pos) { +var mp = this.shiftFrom (pos); +if (mp != null) { +return mp[0]; +}return pos; +}, "~N"); +Clazz.defineMethod (c$, "getMappedWord", +function (pos) { +var mp = this.shiftFrom (pos); +if (mp != null) { +return Clazz.newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.getToRatio () - 1)]); +}return null; +}, "~N"); +Clazz.defineMethod (c$, "getInverse", +function () { +return new jalview.util.MapList (this.getToRanges (), this.getFromRanges (), this.getToRatio (), this.getFromRatio ()); +}); +Clazz.defineMethod (c$, "containsEither", +function (local, map) { +if (local) { +return ((this.getFromLowest () >= map.getFromLowest () && this.getFromHighest () <= map.getFromHighest ()) || (this.getFromLowest () <= map.getFromLowest () && this.getFromHighest () >= map.getFromHighest ())); +} else { +return ((this.getToLowest () >= map.getToLowest () && this.getToHighest () <= map.getToHighest ()) || (this.getToLowest () <= map.getToLowest () && this.getToHighest () >= map.getToHighest ())); +}}, "~B,jalview.util.MapList"); +Clazz.overrideMethod (c$, "toString", +function () { +var sb = new StringBuilder (64); +sb.append ("From (").append (this.fromRatio).append (":").append (this.toRatio).append (") ["); +for (var shift, $shift = this.fromShifts.iterator (); $shift.hasNext () && ((shift = $shift.next ()) || true);) { +sb.append (" ").append (java.util.Arrays.toString (shift)); +} +sb.append (" ] To ["); +for (var shift, $shift = this.toShifts.iterator (); $shift.hasNext () && ((shift = $shift.next ()) || true);) { +sb.append (" ").append (java.util.Arrays.toString (shift)); +} +sb.append (" ]"); +return sb.toString (); +}); +});