Merge branch 'improvement/JAL-3830_remove_dock_icon_in_headless_mode' into develop
[jalview.git] / src / jalview / renderer / AnnotationRenderer.java
index 95e320f..ad1fa4a 100644 (file)
  */
 package jalview.renderer;
 
+import java.awt.BasicStroke;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.Image;
+import java.awt.geom.AffineTransform;
+import java.awt.image.ImageObserver;
+import java.util.BitSet;
+import java.util.Hashtable;
+
 import jalview.analysis.AAFrequency;
 import jalview.analysis.CodingUtils;
 import jalview.analysis.Rna;
@@ -38,18 +50,6 @@ import jalview.schemes.ResidueProperties;
 import jalview.schemes.ZappoColourScheme;
 import jalview.util.Platform;
 
-import java.awt.BasicStroke;
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.Image;
-import java.awt.geom.AffineTransform;
-import java.awt.image.ImageObserver;
-import java.util.BitSet;
-import java.util.Hashtable;
-
 public class AnnotationRenderer
 {
   private static final int UPPER_TO_LOWER = 'a' - 'A'; // 32
@@ -468,8 +468,8 @@ public class AnnotationRenderer
     boolean validRes = false;
     boolean validEnd = false;
     boolean labelAllCols = false;
-//    boolean centreColLabels;
-//    boolean centreColLabelsDef = av.isCentreColumnLabels();
+    // boolean centreColLabels;
+    // boolean centreColLabelsDef = av.isCentreColumnLabels();
     boolean scaleColLabel = false;
     final AlignmentAnnotation consensusAnnot = av
             .getAlignmentConsensusAnnotation();
@@ -515,7 +515,7 @@ public class AnnotationRenderer
       {
         continue;
       }
-//      centreColLabels = row.centreColLabels || centreColLabelsDef;
+      // centreColLabels = row.centreColLabels || centreColLabelsDef;
       labelAllCols = row.showAllColLabels;
       scaleColLabel = row.scaleColLabel;
       lastSS = ' ';
@@ -1077,22 +1077,22 @@ public class AnnotationRenderer
                     .getRendererFor(row);
             if (renderer != null)
             {
-              renderer.renderRow(g, charWidth, charHeight,
-                      hasHiddenColumns, av, hiddenColumns, columnSelection,
-                      row, row_annotations, startRes, endRes, row.graphMin,
+              renderer.renderRow(g, charWidth, charHeight, hasHiddenColumns,
+                      av, hiddenColumns, columnSelection, row,
+                      row_annotations, startRes, endRes, row.graphMin,
                       row.graphMax, y);
             }
             if (debugRedraw)
             {
               if (renderer == null)
               {
-                System.err.println("No renderer found for "
-                        + row.toString());
+                System.err
+                        .println("No renderer found for " + row.toString());
               }
               else
               {
-                System.err.println("rendered with "
-                        + renderer.getClass().toString());
+                System.err.println(
+                        "rendered with " + renderer.getClass().toString());
               }
             }
 
@@ -1300,8 +1300,7 @@ public class AnnotationRenderer
         break;
       }
 
-      if (aa_annotations[column] == null
-              || aa_annotations[column - 1] == null)
+      if (aa_annotations[column] == null)
       {
         x++;
         continue;
@@ -1316,6 +1315,25 @@ public class AnnotationRenderer
         g.setColor(aa_annotations[column].colour);
       }
 
+      if (aa_annotations[column - 1] == null
+              && aa_annotations.length > column + 1
+              && aa_annotations[column + 1] == null)
+      {
+        // standalone value
+        y1 = y - (int) (((aa_annotations[column].value - min) / range)
+                * graphHeight);
+        g.drawLine(x * charWidth + charWidth / 4, y1,
+                x * charWidth + 3 * charWidth / 4, y1);
+        x++;
+        continue;
+      }
+
+      if (aa_annotations[column - 1] == null)
+      {
+        x++;
+        continue;
+      }
+
       y1 = y - (int) (((aa_annotations[column - 1].value - min) / range)
               * graphHeight);
       y2 = y - (int) (((aa_annotations[column].value - min) / range)
@@ -1550,6 +1568,8 @@ public class AnnotationRenderer
                       .deriveFont(AffineTransform.getScaleInstance(sx, sy));
               g.setFont(font);
               g.drawChars(dc, 0, dc.length, x * charWidth, hght);
+              g.setFont(ofont);
+
               ht += newHeight;
             }
           }