Merge branch 'develop' into releases/Release_2_10_2_Branch
[jalview.git] / src / jalview / renderer / AnnotationRenderer.java
index 518c179..41772d4 100644 (file)
@@ -76,7 +76,7 @@ public class AnnotationRenderer
   ResidueShaderI profcolour = null;
 
   private ColumnSelection columnSelection;
-  
+
   private HiddenColumns hiddenColumns;
 
   private ProfilesI hconsensus;
@@ -186,8 +186,9 @@ public class AnnotationRenderer
          * display a backward arrow
          */
         g.fillPolygon(new int[] { lastSSX + 5, lastSSX + 5, lastSSX },
-                new int[] { y + iconOffset, y + 14 + iconOffset,
-                    y + 8 + iconOffset }, 3);
+                new int[]
+                { y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset },
+                3);
         x1 += 5;
       }
       if (diffdownstream)
@@ -204,8 +205,10 @@ public class AnnotationRenderer
          * if annotation ending with an opeing base pair half of the stem, 
          * display a forward arrow
          */
-        g.fillPolygon(new int[] { x2 - 5, x2 - 5, x2 }, new int[] {
-            y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset }, 3);
+        g.fillPolygon(new int[] { x2 - 5, x2 - 5, x2 },
+                new int[]
+                { y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset },
+                3);
         x2 -= 5;
       }
       if (diffupstream)
@@ -237,7 +240,8 @@ public class AnnotationRenderer
     boolean diffdownstream = !validRes || !validEnd
             || row_annotations[column] == null
             || !dc.equals(row_annotations[column].displayCharacter);
-    // System.out.println("Column "+column+" diff up: "+diffupstream+" down:"+diffdownstream);
+    // System.out.println("Column "+column+" diff up: "+diffupstream+"
+    // down:"+diffdownstream);
     // If a closing base pair half of the stem, display a backward arrow
     if (column > 0 && Rna.isClosingParenthesis(dc))
     {
@@ -247,8 +251,9 @@ public class AnnotationRenderer
       // dc.equals(row_annotations[column-2].displayCharacter))
       {
         g.fillPolygon(new int[] { lastSSX + 5, lastSSX + 5, lastSSX },
-                new int[] { y + iconOffset, y + 14 + iconOffset,
-                    y + 8 + iconOffset }, 3);
+                new int[]
+                { y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset },
+                3);
         x1 += 5;
       }
       if (diffdownstream)
@@ -262,8 +267,10 @@ public class AnnotationRenderer
       // display a forward arrow
       if (diffdownstream)
       {
-        g.fillPolygon(new int[] { x2 - 5, x2 - 5, x2 }, new int[] {
-            y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset }, 3);
+        g.fillPolygon(new int[] { x2 - 5, x2 - 5, x2 },
+                new int[]
+                { y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset },
+                3);
         x2 -= 5;
       }
       if (diffupstream)
@@ -325,7 +332,8 @@ public class AnnotationRenderer
        * the alignment has no colourscheme set
        * (would like to use user preference but n/a for applet)
        */
-      ColourSchemeI col = av.getAlignment().isNucleotide() ? new NucleotideColourScheme()
+      ColourSchemeI col = av.getAlignment().isNucleotide()
+              ? new NucleotideColourScheme()
               : new ZappoColourScheme();
       profcolour = new ResidueShader(col);
     }
@@ -352,9 +360,8 @@ public class AnnotationRenderer
     // properties/rendering attributes as a global 'alignment group' which holds
     // all vis settings for the alignment as a whole rather than a subset
     //
-    if (aa.autoCalculated
-            && (aa.label.startsWith("Consensus") || aa.label
-                    .startsWith("cDNA Consensus")))
+    if (aa.autoCalculated && (aa.label.startsWith("Consensus")
+            || aa.label.startsWith("cDNA Consensus")))
     {
       boolean forComplement = aa.label.startsWith("cDNA Consensus");
       if (aa.groupRef != null && aa.groupRef.consensusData != null
@@ -371,13 +378,12 @@ public class AnnotationRenderer
       {
         if (forComplement)
         {
-          return AAFrequency.extractCdnaProfile(
-                  complementConsensus[column], av_ignoreGapsConsensus);
+          return AAFrequency.extractCdnaProfile(complementConsensus[column],
+                  av_ignoreGapsConsensus);
         }
         else
         {
-          return AAFrequency.extractProfile(
-hconsensus.get(column),
+          return AAFrequency.extractProfile(hconsensus.get(column),
                   av_ignoreGapsConsensus);
         }
       }
@@ -463,7 +469,8 @@ hconsensus.get(column),
             .getAlignmentStrucConsensusAnnotation();
     final AlignmentAnnotation complementConsensusAnnot = av
             .getComplementConsensusAnnotation();
-    boolean renderHistogram = true, renderProfile = true, normaliseProfile = false, isRNA = rna;
+    boolean renderHistogram = true, renderProfile = true,
+            normaliseProfile = false, isRNA = rna;
 
     BitSet graphGroupDrawn = new BitSet();
     int charOffset = 0; // offset for a label
@@ -514,8 +521,8 @@ hconsensus.get(column),
       lastSS = ' ';
       lastSSX = 0;
 
-      if (!useClip
-              || ((y - charHeight) < visHeight && (y + row.height + charHeight * 2) >= sOffset))
+      if (!useClip || ((y - charHeight) < visHeight
+              && (y + row.height + charHeight * 2) >= sOffset))
       {// if_in_visible_region
         if (!clipst)
         {
@@ -555,8 +562,8 @@ hconsensus.get(column),
         {
           y += charHeight;
           usedFaded = true;
-          g.drawImage(fadedImage, 0, y - row.height, imgWidth, y, 0, y
-                  - row.height, imgWidth, y, annotationPanel);
+          g.drawImage(fadedImage, 0, y - row.height, imgWidth, y, 0,
+                  y - row.height, imgWidth, y, annotationPanel);
           g.setColor(Color.black);
           // g.drawString("Calculating "+aa[i].label+"....",20, y-row.height/2);
 
@@ -614,7 +621,8 @@ hconsensus.get(column),
           {
             validRes = true;
           }
-          final String displayChar = validRes ? row_annotations[column].displayCharacter
+          final String displayChar = validRes
+                  ? row_annotations[column].displayCharacter
                   : null;
           if (x > -1)
           {
@@ -684,17 +692,17 @@ hconsensus.get(column),
 
               if (column == 0 || row.graph > 0)
               {
-                g.drawString(displayChar, (x * charWidth) + charOffset, y
-                        + iconOffset);
+                g.drawString(displayChar, (x * charWidth) + charOffset,
+                        y + iconOffset);
               }
-              else if (row_annotations[column - 1] == null
-                      || (labelAllCols
-                              || !displayChar
-                                      .equals(row_annotations[column - 1].displayCharacter) || (displayChar
-                              .length() < 2 && row_annotations[column].secondaryStructure == ' ')))
+              else if (row_annotations[column - 1] == null || (labelAllCols
+                      || !displayChar.equals(
+                              row_annotations[column - 1].displayCharacter)
+                      || (displayChar.length() < 2
+                              && row_annotations[column].secondaryStructure == ' ')))
               {
-                g.drawString(displayChar, x * charWidth + charOffset, y
-                        + iconOffset);
+                g.drawString(displayChar, x * charWidth + charOffset,
+                        y + iconOffset);
               }
               g.setFont(ofont);
             }
@@ -758,7 +766,8 @@ hconsensus.get(column),
               {
 
                 int nb_annot = x - temp;
-                // System.out.println("\t type :"+lastSS+"\t x :"+x+"\t nbre annot :"+nb_annot);
+                // System.out.println("\t type :"+lastSS+"\t x :"+x+"\t nbre
+                // annot :"+nb_annot);
                 switch (lastSS)
                 {
                 case '(': // Stem case for RNA secondary structure
@@ -852,8 +861,8 @@ hconsensus.get(column),
                   break;
                 default:
                   g.setColor(Color.gray);
-                  g.fillRect(lastSSX, y + 6 + iconOffset, (x * charWidth)
-                          - lastSSX, 2);
+                  g.fillRect(lastSSX, y + 6 + iconOffset,
+                          (x * charWidth) - lastSSX, 2);
                   temp = x;
                   break;
                 }
@@ -1052,7 +1061,7 @@ hconsensus.get(column),
         {
           clipend = true;
         }
-      }// end if_in_visible_region
+      } // end if_in_visible_region
       if (row.graph > 0 && row.hasText)
       {
         y += charHeight;
@@ -1069,13 +1078,13 @@ hconsensus.get(column),
       {
         if (clipst)
         {
-          System.err.println("Start clip at : " + yfrom + " (index " + f_i
-                  + ")");
+          System.err.println(
+                  "Start clip at : " + yfrom + " (index " + f_i + ")");
         }
         if (clipend)
         {
-          System.err.println("End clip at : " + yto + " (index " + f_to
-                  + ")");
+          System.err.println(
+                  "End clip at : " + yto + " (index " + f_to + ")");
         }
       }
       ;
@@ -1098,8 +1107,8 @@ hconsensus.get(column),
   private Color sdNOTCANONICAL_COLOUR;
 
   void drawGlyphLine(Graphics g, Annotation[] row, int lastSSX, int x,
-          int y, int iconOffset, int startRes, int column,
-          boolean validRes, boolean validEnd)
+          int y, int iconOffset, int startRes, int column, boolean validRes,
+          boolean validEnd)
   {
     g.setColor(GLYPHLINE_COLOR);
     g.fillRect(lastSSX, y + 6 + iconOffset, (x * charWidth) - lastSSX, 2);
@@ -1107,31 +1116,34 @@ hconsensus.get(column),
 
   void drawSheetAnnot(Graphics g, Annotation[] row,
 
-  int lastSSX, int x, int y, int iconOffset, int startRes, int column,
-          boolean validRes, boolean validEnd)
+          int lastSSX, int x, int y, int iconOffset, int startRes,
+          int column, boolean validRes, boolean validEnd)
   {
     g.setColor(SHEET_COLOUR);
 
     if (!validEnd || !validRes || row == null || row[column] == null
             || row[column].secondaryStructure != 'E')
     {
-      g.fillRect(lastSSX, y + 4 + iconOffset,
-              (x * charWidth) - lastSSX - 4, 7);
-      g.fillPolygon(new int[] { (x * charWidth) - 4, (x * charWidth) - 4,
-          (x * charWidth) }, new int[] { y + iconOffset,
-          y + 14 + iconOffset, y + 7 + iconOffset }, 3);
+      g.fillRect(lastSSX, y + 4 + iconOffset, (x * charWidth) - lastSSX - 4,
+              7);
+      g.fillPolygon(
+              new int[]
+              { (x * charWidth) - 4, (x * charWidth) - 4, (x * charWidth) },
+              new int[]
+              { y + iconOffset, y + 14 + iconOffset, y + 7 + iconOffset },
+              3);
     }
     else
     {
-      g.fillRect(lastSSX, y + 4 + iconOffset,
-              (x + 1) * charWidth - lastSSX, 7);
+      g.fillRect(lastSSX, y + 4 + iconOffset, (x + 1) * charWidth - lastSSX,
+              7);
     }
 
   }
 
   void drawHelixAnnot(Graphics g, Annotation[] row, int lastSSX, int x,
-          int y, int iconOffset, int startRes, int column,
-          boolean validRes, boolean validEnd)
+          int y, int iconOffset, int startRes, int column, boolean validRes,
+          boolean validEnd)
   {
     g.setColor(HELIX_COLOUR);
 
@@ -1163,8 +1175,8 @@ hconsensus.get(column),
       else
       {
         // g.setColor(Color.magenta);
-        g.fillRoundRect(lastSSX + ofs, y + 4 + iconOffset, x2 - x1 - ofs
-                + 1, 8, 0, 0);
+        g.fillRoundRect(lastSSX + ofs, y + 4 + iconOffset,
+                x2 - x1 - ofs + 1, 8, 0, 0);
 
       }
 
@@ -1190,8 +1202,8 @@ hconsensus.get(column),
   }
 
   void drawLineGraph(Graphics g, AlignmentAnnotation _aa,
-          Annotation[] aa_annotations, int sRes, int eRes, int y,
-          float min, float max, int graphHeight)
+          Annotation[] aa_annotations, int sRes, int eRes, int y, float min,
+          float max, int graphHeight)
   {
     if (sRes > aa_annotations.length)
     {
@@ -1259,13 +1271,13 @@ hconsensus.get(column),
         g.setColor(aa_annotations[column].colour);
       }
 
-      y1 = y
-              - (int) (((aa_annotations[column - 1].value - min) / range) * graphHeight);
-      y2 = y
-              - (int) (((aa_annotations[column].value - min) / range) * graphHeight);
+      y1 = y - (int) (((aa_annotations[column - 1].value - min) / range)
+              * graphHeight);
+      y2 = y - (int) (((aa_annotations[column].value - min) / range)
+              * graphHeight);
 
-      g.drawLine(x * charWidth - charWidth / 2, y1, x * charWidth
-              + charWidth / 2, y2);
+      g.drawLine(x * charWidth - charWidth / 2, y1,
+              x * charWidth + charWidth / 2, y2);
       x++;
     }
 
@@ -1274,7 +1286,8 @@ hconsensus.get(column),
       g.setColor(_aa.threshold.colour);
       Graphics2D g2 = (Graphics2D) g;
       g2.setStroke(new BasicStroke(1, BasicStroke.CAP_SQUARE,
-              BasicStroke.JOIN_ROUND, 3f, new float[] { 5f, 3f }, 0f));
+              BasicStroke.JOIN_ROUND, 3f, new float[]
+              { 5f, 3f }, 0f));
 
       y2 = (int) (y - ((_aa.threshold.value - min) / range) * graphHeight);
       g.drawLine(0, y2, (eRes - sRes) * charWidth, y2);
@@ -1336,8 +1349,8 @@ hconsensus.get(column),
         g.setColor(aa_annotations[column].colour);
       }
 
-      y1 = y
-              - (int) (((aa_annotations[column].value - min) / (range)) * _aa.graphHeight);
+      y1 = y - (int) (((aa_annotations[column].value - min) / (range))
+              * _aa.graphHeight);
 
       if (renderHistogram)
       {
@@ -1411,10 +1424,10 @@ hconsensus.get(column),
             ht += scl;
             // next profl[] position is profile % for the character(s)
             scl = htn * scale * profl[c++];
-            lm = ofont.getLineMetrics(dc, 0, 1, g.getFontMetrics()
-                    .getFontRenderContext());
-            Font font = ofont.deriveFont(AffineTransform.getScaleInstance(
-                    wdth, scl / lm.getAscent()));
+            lm = ofont.getLineMetrics(dc, 0, 1,
+                    g.getFontMetrics().getFontRenderContext());
+            Font font = ofont.deriveFont(AffineTransform
+                    .getScaleInstance(wdth, scl / lm.getAscent()));
             g.setFont(font);
             lm = g.getFontMetrics().getLineMetrics(dc, 0, 1, g);
 
@@ -1442,8 +1455,8 @@ hconsensus.get(column),
             }
             g.setColor(colour == Color.white ? Color.lightGray : colour);
 
-            hght = (ht + (scl - lm.getDescent() - lm.getBaselineOffsets()[lm
-                    .getBaselineIndex()]));
+            hght = (ht + (scl - lm.getDescent()
+                    - lm.getBaselineOffsets()[lm.getBaselineIndex()]));
 
             g.drawChars(dc, 0, dc.length, x * charWidth, (int) hght);
             valuesProcessed++;
@@ -1458,10 +1471,11 @@ hconsensus.get(column),
       g.setColor(_aa.threshold.colour);
       Graphics2D g2 = (Graphics2D) g;
       g2.setStroke(new BasicStroke(1, BasicStroke.CAP_SQUARE,
-              BasicStroke.JOIN_ROUND, 3f, new float[] { 5f, 3f }, 0f));
+              BasicStroke.JOIN_ROUND, 3f, new float[]
+              { 5f, 3f }, 0f));
 
-      y2 = (int) (y - ((_aa.threshold.value - min) / range)
-              * _aa.graphHeight);
+      y2 = (int) (y
+              - ((_aa.threshold.value - min) / range) * _aa.graphHeight);
       g.drawLine(0, y2, (eRes - sRes) * charWidth, y2);
       g2.setStroke(new BasicStroke());
     }