X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fjalview%2Fdatamodel%2FSequence.java;h=47a7ead133a3c5dea82a25acea37ca72a21308a8;hb=74d5ca6390288f6cd6cb445cccc728802806a29a;hp=4c46522484ecee30cc46b6fa1517a01a25d3180e;hpb=a435a8668f8df568d3bdcf4e286210b69c18920c;p=jalview.git diff --git a/src/jalview/datamodel/Sequence.java b/src/jalview/datamodel/Sequence.java index 4c46522..47a7ead 100755 --- a/src/jalview/datamodel/Sequence.java +++ b/src/jalview/datamodel/Sequence.java @@ -28,7 +28,6 @@ import jalview.util.DBRefUtils; import jalview.util.MapList; import jalview.util.StringUtils; -import java.awt.Color; import java.util.ArrayList; import java.util.Arrays; import java.util.BitSet; @@ -119,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. * @@ -1613,7 +1617,7 @@ public class Sequence extends ASequence implements SequenceI _isNa = Comparison.isNucleotide(this); } return !_isNa; - }; + } /* * (non-Javadoc) @@ -1968,15 +1972,6 @@ public class Sequence extends ASequence implements SequenceI List result = getFeatures().findFeatures(startPos, endPos, types); - if (datasetSequence != null) - { - result = datasetSequence.getFeatures().findFeatures(startPos, endPos, - types); - } - else - { - result = sequenceFeatureStore.findFeatures(startPos, endPos, types); - } /* * if end column is gapped, endPos may be to the right, @@ -2027,6 +2022,7 @@ public class Sequence extends ASequence implements SequenceI @Override public void sequenceChanged() { + argb = null; changeCount++; } @@ -2130,19 +2126,45 @@ public class Sequence extends ASequence implements SequenceI } @Override - public Color getColor(int i) + public int getColor(int i) { - return null; + return argb == null ? 0 : argb[i]; } @Override - public Color setColor(int i, Color c) + public int setColor(int i, int rgb) { - return c; + if (argb == null) + { + argb = new int[this.sequence.length]; + } + return (argb[i] = rgb); } @Override public void resetColors() { + argb = null; + } + + /** + * Answers a (possibly empty) list of features of the specified type that + * overlap the specified column position. If parameter {@code result} is not + * null, features are appended to it and the (possibly extended) list is + * returned. + */ + @Override + public List findFeatures(int column, String type, + List result) + { + return getFeatures().findFeatures(findPosition(column - 1), type, + result); + } + + @Override + public boolean hasFeatures(String type) + { + return getFeatures().hasFeatures(type); } + }