Merge branch 'develop' into JAL-1483_29dev
[jalview.git] / src / jalview / gui / SequenceRenderer.java
index bcbebbd..177fc83 100755 (executable)
@@ -20,6 +20,7 @@
  */
 package jalview.gui;
 
+import jalview.api.FeatureRenderer;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
@@ -80,11 +81,12 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer
     // If EPS graphics, stringWidth will be a double, not an int
     double dwidth = fm.getStringBounds("M", g).getWidth();
 
-    monospacedFont = (dwidth == fm.getStringBounds("|", g).getWidth() && (float) av.charWidth == dwidth);
+    monospacedFont = (dwidth == fm.getStringBounds("|", g).getWidth() && av.charWidth == dwidth);
 
     this.renderGaps = renderGaps;
   }
 
+  @Override
   public Color getResidueBoxColour(SequenceI seq, int i)
   {
     allGroups = av.getAlignment().findAllGroups(seq);
@@ -105,6 +107,31 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer
   }
 
   /**
+   * Get the residue colour at the given sequence position - as determined by
+   * the sequence group colour (if any), else the colour scheme, possibly
+   * overridden by a feature colour.
+   * 
+   * @param seq
+   * @param position
+   * @param fr
+   * @return
+   */
+  @Override
+  public Color getResidueColour(final SequenceI seq, int position,
+          FeatureRenderer fr)
+  {
+    // TODO replace 8 or so code duplications with calls to this method
+    // (refactored as needed)
+    Color col = getResidueBoxColour(seq, position);
+
+    if (fr != null)
+    {
+      col = fr.findFeatureColour(col, seq, position);
+    }
+    return col;
+  }
+
+  /**
    * DOCUMENT ME!
    * 
    * @param cs
@@ -188,7 +215,9 @@ public class SequenceRenderer implements jalview.api.SequenceRenderer
           int y1)
   {
     if (seq == null)
+     {
       return; // fix for racecondition
+    }
     int i = start;
     int length = seq.getLength();