patch ensuring annotation is output correctly re * JAL-554
[jalview.git] / src / jalview / util / ShiftList.java
index bcd8e7c..3f66aa5 100644 (file)
@@ -1,36 +1,33 @@
 /*\r
- * Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5)\r
+ * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle\r
+ * \r
+ * This file is part of Jalview.\r
+ * \r
+ * Jalview is free software: you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License \r
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\r
+ * \r
+ * Jalview is distributed in the hope that it will be useful, but \r
+ * WITHOUT ANY WARRANTY; without even the implied warranty \r
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR \r
+ * PURPOSE.  See the GNU General Public License for more details.\r
+ * \r
+ * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.\r
  */\r
 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
- * Now growing to be used for interval ranges (position, offset) storing deletions/insertions\r
+ * ShiftList Simple way of mapping a linear series to a new linear range with\r
+ * new points introduced. Use at your own risk! Now growing to be used for\r
+ * interval ranges (position, offset) storing deletions/insertions\r
  */\r
 public class ShiftList\r
 {\r
-    public Vector shifts;\r
+  public Vector shifts;\r
+\r
   public ShiftList()\r
   {\r
     shifts = new Vector();\r
@@ -38,37 +35,51 @@ public class ShiftList
 \r
   /**\r
    * addShift\r
-   * @param pos start position for shift (in original reference frame)\r
-   * @param shift length of shift\r
+   * \r
+   * @param pos\r
+   *          start position for shift (in original reference frame)\r
+   * @param shift\r
+   *          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
+    int[] rshift = null;\r
+    while (sidx < shifts.size()\r
+            && (rshift = (int[]) shifts.elementAt(sidx))[0] < pos)\r
+    {\r
       sidx++;\r
-    if (sidx==shifts.size())\r
-      shifts.insertElementAt(new int[] { pos, shift}, sidx);\r
+    }\r
+    if (sidx == shifts.size())\r
+    {\r
+      shifts.insertElementAt(new int[]\r
+      { pos, shift }, sidx);\r
+    }\r
     else\r
-      rshift[1]+=shift;\r
+    {\r
+      rshift[1] += shift;\r
+    }\r
   }\r
 \r
   /**\r
    * shift\r
-   *\r
-   * @param pos int\r
+   * \r
+   * @param pos\r
+   *          int\r
    * @return int shifted position\r
    */\r
   public int shift(int pos)\r
   {\r
-    if (shifts.size()==0)\r
+    if (shifts.size() == 0)\r
+    {\r
       return pos;\r
-    int shifted=pos;\r
-    int sidx=0;\r
+    }\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
+    while (sidx < shifts.size()\r
+            && (rshift = ((int[]) shifts.elementAt(sidx++)))[0] <= pos)\r
+    {\r
       shifted += rshift[1];\r
     }\r
     return shifted;\r
@@ -81,36 +92,49 @@ public class ShiftList
   {\r
     shifts.removeAllElements();\r
   }\r
+\r
   /**\r
    * invert the shifts\r
+   * \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
+  public ShiftList getInverse()\r
+  {\r
+    ShiftList inverse = new ShiftList();\r
+    if (shifts != null)\r
+    {\r
+      for (int i = 0, j = shifts.size(); i < j; i++)\r
+      {\r
+        int[] sh = (int[]) shifts.elementAt(i);\r
+        if (sh != null)\r
+        {\r
+          inverse.shifts.addElement(new int[]\r
+          { sh[0], -sh[1] });\r
+        }\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
+   * parse a 1d map of position 1<i<n to L<pos[i]<N such as that returned from\r
+   * SequenceI.gapMap()\r
+   * \r
    * @param gapMap\r
    * @return shifts from map index to mapped position\r
    */\r
-  public static ShiftList parseMap(int[] gapMap) {\r
+  public static ShiftList parseMap(int[] gapMap)\r
+  {\r
     ShiftList shiftList = null;\r
-    if (gapMap!=null && gapMap.length>0) {\r
-      shiftList=new ShiftList();\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
+    if (gapMap != null && gapMap.length > 0)\r
+    {\r
+      shiftList = new ShiftList();\r
+      for (int i = 0, p = 0; i < gapMap.length; p++, i++)\r
+      {\r
+        if (p != gapMap[i])\r
+        {\r
+          shiftList.addShift(p, gapMap[i] - p);\r
+          p = gapMap[i];\r
         }\r
       }\r
     }\r