-package jalview.util;
-
-import jalview.datamodel.SequenceI;
-
-import java.util.*;
-
-/**
- * ShiftList
- * Simple way of mapping a linear series to a new linear range with new points introduced.
- * Use at your own risk!
- * <p>Title: ShiftList</p>
- *
- * <p>Description: </p>
- *
- * <p>Copyright: Copyright (c) 2004</p>
- *
- * <p>Company: Dundee University</p>
- *
- * @author not attributable
- * @version 1.0
- */
-public class ShiftList
-{
- public Vector shifts;
- public ShiftList()
- {
- shifts = new Vector();
- }
-
- /**
- * addShift
- * @param pos start position for shift (in original reference frame)
- * @param shift length of shift
- */
- public void addShift(int pos, int shift)
- {
- int sidx = 0;
- int[] rshift=null;
- while (sidx<shifts.size() && (rshift=(int[]) shifts.elementAt(sidx))[0]<pos)
- sidx++;
- if (sidx==shifts.size())
- shifts.insertElementAt(new int[] { pos, shift}, sidx);
- else
- rshift[1]+=shift;
- }
-
- /**
- * shift
- *
- * @param pos int
- * @return int shifted position
- */
- public int shift(int pos)
- {
- if (shifts.size()==0)
- return pos;
- int shifted=pos;
- int sidx=0;
- int rshift[];
- while (sidx<shifts.size()
- &&
- (rshift=((int[]) shifts.elementAt(sidx++)))[0]<=pos) {
- shifted += rshift[1];
- }
- return shifted;
- }
-
- /**
- * clear all shifts
- */
- public void clear()
- {
- shifts.removeAllElements();
- }
- /**
- * invert the shifts
- * @return ShiftList with inverse shift operations
- */
- public ShiftList getInverse() {
- ShiftList inverse=new ShiftList();
- if (shifts!=null) {
- for (int i=0,j=shifts.size(); i<j; i++) {
- int[] sh=(int[]) shifts.get(i);
- if (sh!=null)
- inverse.shifts.add(new int[] {sh[0], -sh[1]});
- }
- }
- return inverse;
- }
-
- /**
- * parse a 1d map of position 1<i<n to L<pos[i]<N
- * such as that returned from SequenceI.gapMap()
- * @param gapMap
- * @return
- */
- public static ShiftList parseMap(int[] gapMap) {
- ShiftList shiftList = null;
- if (gapMap!=null && gapMap.length>0) {
- shiftList=new ShiftList();
-
- for (int i=0,p=0; i<gapMap.length; p++,i++) {
- if (p!=gapMap[i]) {
- shiftList.addShift(p, gapMap[i]-p);
- p=gapMap[i];
- }
- }
- }
- return shiftList;
- }
-}
+package jalview.util;\r
+\r
+import jalview.datamodel.SequenceI;\r
+\r
+import java.util.*;\r
+\r
+/**\r
+ * ShiftList\r
+ * Simple way of mapping a linear series to a new linear range with new points introduced.\r
+ * Use at your own risk!\r
+ * <p>Title: ShiftList</p>\r
+ *\r
+ * <p>Description: </p>\r
+ *\r
+ * <p>Copyright: Copyright (c) 2004</p>\r
+ *\r
+ * <p>Company: Dundee University</p>\r
+ *\r
+ * @author not attributable\r
+ * @version 1.0\r
+ */\r
+public class ShiftList\r
+{\r
+ public Vector shifts;\r
+ public ShiftList()\r
+ {\r
+ shifts = new Vector();\r
+ }\r
+\r
+ /**\r
+ * addShift\r
+ * @param pos start position for shift (in original reference frame)\r
+ * @param shift length of shift\r
+ */\r
+ public void addShift(int pos, int shift)\r
+ {\r
+ int sidx = 0;\r
+ int[] rshift=null;\r
+ while (sidx<shifts.size() && (rshift=(int[]) shifts.elementAt(sidx))[0]<pos)\r
+ sidx++;\r
+ if (sidx==shifts.size())\r
+ shifts.insertElementAt(new int[] { pos, shift}, sidx);\r
+ else\r
+ rshift[1]+=shift;\r
+ }\r
+\r
+ /**\r
+ * shift\r
+ *\r
+ * @param pos int\r
+ * @return int shifted position\r
+ */\r
+ public int shift(int pos)\r
+ {\r
+ if (shifts.size()==0)\r
+ return pos;\r
+ int shifted=pos;\r
+ int sidx=0;\r
+ int rshift[];\r
+ while (sidx<shifts.size()\r
+ &&\r
+ (rshift=((int[]) shifts.elementAt(sidx++)))[0]<=pos) {\r
+ shifted += rshift[1];\r
+ }\r
+ return shifted;\r
+ }\r
+\r
+ /**\r
+ * clear all shifts\r
+ */\r
+ public void clear()\r
+ {\r
+ shifts.removeAllElements();\r
+ }\r
+ /**\r
+ * invert the shifts\r
+ * @return ShiftList with inverse shift operations\r
+ */\r
+ public ShiftList getInverse() {\r
+ ShiftList inverse=new ShiftList();\r
+ if (shifts!=null) {\r
+ for (int i=0,j=shifts.size(); i<j; i++) {\r
+ int[] sh=(int[]) shifts.elementAt(i);\r
+ if (sh!=null)\r
+ inverse.shifts.addElement(new int[] {sh[0], -sh[1]});\r
+ }\r
+ }\r
+ return inverse;\r
+ }\r
+\r
+ /**\r
+ * parse a 1d map of position 1<i<n to L<pos[i]<N\r
+ * such as that returned from SequenceI.gapMap()\r
+ * @param gapMap\r
+ * @return\r
+ */\r
+ public static ShiftList parseMap(int[] gapMap) {\r
+ ShiftList shiftList = null;\r
+ if (gapMap!=null && gapMap.length>0) {\r
+ shiftList=new ShiftList();\r
+\r
+ for (int i=0,p=0; i<gapMap.length; p++,i++) {\r
+ if (p!=gapMap[i]) {\r
+ shiftList.addShift(p, gapMap[i]-p);\r
+ p=gapMap[i];\r
+ }\r
+ }\r
+ }\r
+ return shiftList;\r
+ }\r
+}\r