JAL-3442 colour caching for Overview resize
[jalview.git] / src / jalview / datamodel / Sequence.java
index 6c0e528..04638d3 100755 (executable)
@@ -118,6 +118,11 @@ public class Sequence extends ASequence implements SequenceI
    */
   private int changeCount;
 
+  /*
+   * cached rgb colours for each position of the aligned sequence (column)
+   */
+  private int[] argb;
+
   /**
    * Creates a new Sequence object.
    * 
@@ -2017,6 +2022,7 @@ public class Sequence extends ASequence implements SequenceI
   @Override
   public void sequenceChanged()
   {
+    resetColors();
     changeCount++;
   }
 
@@ -2139,4 +2145,26 @@ public class Sequence extends ASequence implements SequenceI
     return getFeatures().hasFeatures(type);
   }
 
+  @Override
+  public int getColor(int i)
+  {
+    return argb == null ? 0 : argb[i];
+  }
+
+  @Override
+  public int setColor(int i, int rgb)
+  {
+    if (argb == null)
+    {
+      argb = new int[this.sequence.length];
+    }
+    return (argb[i] = rgb);
+  }
+
+  @Override
+  public void resetColors()
+  {
+    argb = null;
+  }
+
 }