1.1 compatible
[jalview.git] / src / jalview / util / ShiftList.java
index 78b99ef..7792287 100644 (file)
-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