Merge branch 'JAL-1347' into develop
[jalview.git] / src / jalview / renderer / AnnotationRenderer.java
index 23726df..e360ba4 100644 (file)
@@ -379,6 +379,8 @@ public class AnnotationRenderer
     boolean centreColLabels, centreColLabelsDef = av
             .getCentreColumnLabels();
     boolean scaleColLabel = false;
+    AlignmentAnnotation consensusAnnot=av.getAlignmentConsensusAnnotation();
+    boolean renderHistogram = true, renderProfile = true, normaliseProfile = false;
 
     BitSet graphGroupDrawn = new BitSet();
     int charOffset = 0; // offset for a label
@@ -392,6 +394,26 @@ public class AnnotationRenderer
     for (int i = 0; i < aa.length; i++)
     {
       AlignmentAnnotation row = aa[i];
+      {
+        // check if this is a consensus annotation row and set the display settings appropriately
+        // TODO: generalise this to have render styles for consensus/profile
+        // data
+        if (row.groupRef != null && row == row.groupRef.getConsensus())
+        {
+          renderHistogram = row.groupRef.isShowConsensusHistogram();
+          renderProfile = row.groupRef.isShowSequenceLogo();
+          normaliseProfile = row.groupRef.isNormaliseSequenceLogo();
+        }
+        else if (row == consensusAnnot)
+        {
+          renderHistogram = av_renderHistogram;
+          renderProfile = av_renderProfile;
+          normaliseProfile = av_normaliseProfile;
+        } else {
+          renderHistogram = true;
+          // don't need to set render/normaliseProfile since they are not currently used in any other annotation track renderer
+        }
+      }
       Annotation[] row_annotations = row.annotations;
       if (!row.visible)
       {
@@ -1132,7 +1154,7 @@ public class AnnotationRenderer
         else if (row.graph == AlignmentAnnotation.BAR_GRAPH)
         {
           drawBarGraph(g, row, row_annotations, startRes, endRes,
-                  row.graphMin, row.graphMax, y);
+                  row.graphMin, row.graphMax, y, renderHistogram,renderProfile,normaliseProfile);
         }
       }
     } else {
@@ -1370,7 +1392,7 @@ public class AnnotationRenderer
 
   public void drawBarGraph(Graphics g, AlignmentAnnotation _aa,
           Annotation[] aa_annotations, int sRes, int eRes, float min,
-          float max, int y)
+          float max, int y, boolean renderHistogram,boolean renderProfile,boolean normaliseProfile)
   {
     if (sRes > aa_annotations.length)
     {
@@ -1394,23 +1416,6 @@ public class AnnotationRenderer
 
     int column;
     int aaMax = aa_annotations.length - 1;
-    boolean renderHistogram = true, renderProfile = true, normaliseProfile = false;
-    // if (aa.autoCalculated && aa.label.startsWith("Consensus"))
-    {
-      // TODO: generalise this to have render styles for consensus/profile data
-      if (_aa.groupRef != null)
-      {
-        renderHistogram = _aa.groupRef.isShowConsensusHistogram();
-        renderProfile = _aa.groupRef.isShowSequenceLogo();
-        normaliseProfile = _aa.groupRef.isNormaliseSequenceLogo();
-      }
-      else
-      {
-        renderHistogram = av_renderHistogram;
-        renderProfile = av_renderProfile;
-        normaliseProfile = av_normaliseProfile;
-      }
-    }
     while (x < eRes - sRes)
     {
       column = sRes + x;