-1 from east scale, wrapped alignment
[jalview.git] / src / jalview / gui / SeqCanvas.java
index 2b5995c..d9f7ebb 100755 (executable)
@@ -34,8 +34,8 @@ import javax.swing.*;
  */\r
 public class SeqCanvas extends JComponent\r
 {\r
-    FeatureRenderer fr;\r
-    SequenceRenderer sr;\r
+    final FeatureRenderer fr;\r
+    final SequenceRenderer sr;\r
     BufferedImage img;\r
     Graphics2D gg;\r
     int imgWidth;\r
@@ -46,6 +46,11 @@ public class SeqCanvas extends JComponent
     int LABEL_WEST;\r
     int LABEL_EAST;\r
 \r
+\r
+    int cursorX = 0;\r
+    int cursorY = 0;\r
+\r
+\r
     /**\r
      * Creates a new SeqCanvas object.\r
      *\r
@@ -175,15 +180,14 @@ public class SeqCanvas extends JComponent
         if(av.hasHiddenColumns)\r
                 endx = av.getColumnSelection().adjustForHiddenColumns(endx);\r
 \r
+        SequenceI seq;\r
         // EAST SCALE\r
         for (int i = 0; i < av.alignment.getHeight(); i++)\r
         {\r
-            SequenceI seq = av.alignment.getSequenceAt(i);\r
+            seq = av.alignment.getSequenceAt(i);\r
             int index = endx;\r
             int value = -1;\r
 \r
-\r
-\r
             while (index > startx)\r
             {\r
                 if (jalview.util.Comparison.isGap(seq.getCharAt(index)))\r
@@ -193,7 +197,7 @@ public class SeqCanvas extends JComponent
                     continue;\r
                 }\r
 \r
-                value = av.alignment.getSequenceAt(i).findPosition(index);\r
+                value = seq.findPosition(index);\r
 \r
                 break;\r
             }\r
@@ -342,7 +346,7 @@ public class SeqCanvas extends JComponent
 \r
         if (pdbCanvas != null)\r
         {\r
-         pdbCanvas.updateSeqColours();\r
+           pdbCanvas.updateSeqColours();\r
         }\r
 \r
     }\r
@@ -431,11 +435,18 @@ public class SeqCanvas extends JComponent
         av.endRes = av.startRes + cWidth;\r
 \r
 \r
-        int endx = (startRes + cWidth) - 1;\r
+        int endx;\r
         int ypos = hgap;\r
 \r
         while ((ypos <= canvasHeight) && (startRes < av.alignment.getWidth()))\r
         {\r
+          endx = startRes + cWidth -1;\r
+\r
+          if (endx > al.getWidth())\r
+          {\r
+            endx = al.getWidth();\r
+          }\r
+\r
             g.setFont(av.getFont());\r
             g.setColor(Color.black);\r
 \r
@@ -472,12 +483,6 @@ public class SeqCanvas extends JComponent
                     cWidth * av.charWidth, (int) clip.getBounds().getHeight());\r
             }\r
 \r
-            if (av.vconsensus!=null && av.alignment.getWidth() >= av.vconsensus.size())\r
-            {\r
-              endx = av.vconsensus.size() - 2;\r
-            }\r
-\r
-\r
             drawPanel(g, startRes, endx, 0, al.getHeight(), ypos);\r
 \r
             if(av.showAnnotation)\r
@@ -486,7 +491,7 @@ public class SeqCanvas extends JComponent
               if(annotations==null)\r
                 annotations = new AnnotationPanel(av);\r
 \r
-              annotations.drawComponent( (Graphics2D) g, startRes, endx + 1);\r
+              annotations.drawComponent( (Graphics2D) g, startRes, endx+1);\r
               g.translate(0, -cHeight - ypos);\r
             }\r
             g.setClip(clip);\r
@@ -497,12 +502,6 @@ public class SeqCanvas extends JComponent
               ypos -= 3;\r
 \r
             startRes += cWidth;\r
-            endx = (startRes + cWidth) - 1;\r
-\r
-            if (endx > al.getWidth())\r
-            {\r
-                endx = al.getWidth();\r
-            }\r
         }\r
     }\r
 \r
@@ -522,35 +521,12 @@ public class SeqCanvas extends JComponent
      * DOCUMENT ME!\r
      *\r
      * @param g1 DOCUMENT ME!\r
-     * @param x1 DOCUMENT ME!\r
-     * @param x2 DOCUMENT ME!\r
-     * @param y1 DOCUMENT ME!\r
-     * @param y2 DOCUMENT ME!\r
-     * @param startx DOCUMENT ME!\r
-     * @param starty DOCUMENT ME!\r
+     * @param startRes DOCUMENT ME!\r
+     * @param endRes DOCUMENT ME!\r
+     * @param startSeq DOCUMENT ME!\r
+     * @param endSeq DOCUMENT ME!\r
      * @param offset DOCUMENT ME!\r
      */\r
-\r
-    float aaRatio = 2f/3f;\r
-    public void increaseAARatio()\r
-    {\r
-      aaRatio += .025;\r
-      if(aaRatio>1)\r
-        aaRatio = 1;\r
-\r
-      repaint();\r
-    }\r
-\r
-    public void decreaseAARation()\r
-    {\r
-      aaRatio -= .025;\r
-      if(aaRatio<0)\r
-        aaRatio = 0;\r
-\r
-      repaint();\r
-    }\r
-\r
-\r
     void drawPanel(Graphics g1, int startRes, int endRes,\r
                     int startSeq, int endSeq, int offset)\r
     {\r
@@ -621,9 +597,10 @@ public class SeqCanvas extends JComponent
                    int offset)\r
    {\r
 \r
-      sr.renderGaps(av.renderGaps);\r
+\r
       Graphics2D g = (Graphics2D) g1;\r
       g.setFont(av.getFont());\r
+      sr.prepare(g, av.renderGaps);\r
 \r
       SequenceI nextSeq;\r
 \r
@@ -633,15 +610,14 @@ public class SeqCanvas extends JComponent
         {\r
             nextSeq = av.alignment.getSequenceAt(i);\r
 \r
-            sr.drawSequence(g, nextSeq, av.alignment.findAllGroups(nextSeq),\r
+            sr.drawSequence(nextSeq, av.alignment.findAllGroups(nextSeq),\r
                             startRes, endRes,\r
                             offset + ( (i - startSeq) * av.charHeight));\r
 \r
             if (av.showSequenceFeatures)\r
             {\r
                 fr.drawSequence(g1, nextSeq, startRes, endRes,\r
-                    offset + ((i - startSeq) * av.charHeight), av.charWidth,\r
-                    av.charHeight);\r
+                    offset + ((i - startSeq) * av.charHeight));\r
             }\r
 \r
             /// Highlight search Results once all sequences have been drawn\r
@@ -655,10 +631,16 @@ public class SeqCanvas extends JComponent
                   sr.drawHighlightedText(nextSeq, visibleResults[r],\r
                                          visibleResults[r + 1],\r
                                          (visibleResults[r] - startRes) * av.charWidth,\r
-                                         offset + ( (i - startSeq) * av.charHeight),\r
-                                         av.charWidth, av.charHeight);\r
+                                         offset + ( (i - startSeq) * av.charHeight));\r
                 }\r
             }\r
+\r
+            if(av.cursorMode && cursorY==i\r
+               && cursorX>=startRes && cursorX<=endRes)\r
+            {\r
+              sr.drawCursor(nextSeq, cursorX, (cursorX - startRes) * av.charWidth,\r
+                            offset + ( (i - startSeq) * av.charHeight));\r
+            }\r
           }\r
 \r
         //\r