X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FFeatureRenderer.java;h=7c6032716287cee54db9b9818b34690d2d0628c2;hb=72baa5e02d3f71f1c0259072fdbd0b2bf8250e6c;hp=6fbdee858b359fdd7321ef94a7b8efd49734baf7;hpb=add2f44022857817d1bb9a502f0e37627a34c5d8;p=jalview.git diff --git a/src/jalview/gui/FeatureRenderer.java b/src/jalview/gui/FeatureRenderer.java index 6fbdee8..7c60327 100755 --- a/src/jalview/gui/FeatureRenderer.java +++ b/src/jalview/gui/FeatureRenderer.java @@ -41,17 +41,21 @@ public class FeatureRenderer FontMetrics fm; int charOffset; + Hashtable featureColours = new Hashtable(); + + // A higher level for grouping features of a // particular type Hashtable featureGroups = null; - // This is actually an Integer held in the hashtable, // Retrieved using the key feature type Object currentColour; String [] renderOrder; + boolean newFeatureAdded = false; + /** * Creates a new FeatureRenderer object. @@ -61,7 +65,6 @@ public class FeatureRenderer public FeatureRenderer(AlignViewport av) { this.av = av; - initColours(); } public void transferSettings(FeatureRenderer fr) @@ -76,33 +79,30 @@ public class FeatureRenderer boolean offscreenRender = false; public Color findFeatureColour(Color initialCol, SequenceI seq, int res) { - int seqindex = av.alignment.findIndex(seq); - return new Color( findFeatureColour (initialCol.getRGB(), - seqindex, res )); + seq, res )); } /** - * This is used by the Molecule Viewer to get the accurate colour - * of the rendered sequence + * This is used by the Molecule Viewer and Overview to + * get the accurate colourof the rendered sequence */ - public int findFeatureColour(int initialCol, int seqIndex, int column) + public int findFeatureColour(int initialCol, SequenceI seq, int column) { if(!av.showSequenceFeatures) return initialCol; - if(seqIndex!=lastSequenceIndex) + if(seq!=lastSeq) { - lastSequence = av.alignment.getSequenceAt(seqIndex); - lastSequenceIndex = seqIndex; - sequenceFeatures = lastSequence.getDatasetSequence().getSequenceFeatures(); + lastSeq = seq; + sequenceFeatures = lastSeq.getDatasetSequence().getSequenceFeatures(); if(sequenceFeatures==null) return initialCol; sfSize = sequenceFeatures.length; } - if(jalview.util.Comparison.isGap(lastSequence.getCharAt(column))) + if(jalview.util.Comparison.isGap(lastSeq.getCharAt(column))) return Color.white.getRGB(); @@ -120,7 +120,7 @@ public class FeatureRenderer { offscreenImage.setRGB(0,0,initialCol); drawSequence(offscreenImage.getGraphics(), - lastSequence, + lastSeq, column,column,0); return offscreenImage.getRGB(0,0); @@ -128,8 +128,8 @@ public class FeatureRenderer else { drawSequence(null, - lastSequence, - lastSequence.findPosition(column), + lastSeq, + lastSeq.findPosition(column), -1, -1); if (currentColour == null) @@ -157,8 +157,7 @@ public class FeatureRenderer */ // String type; // SequenceFeature sf; - int lastSequenceIndex=-1; - SequenceI lastSequence; + SequenceI lastSeq; SequenceFeature [] sequenceFeatures; int sfSize, sfindex, spos, epos; @@ -174,7 +173,9 @@ public class FeatureRenderer fm = g.getFontMetrics(); - if (av.featuresDisplayed == null || renderOrder==null) + if (av.featuresDisplayed == null + || renderOrder==null + || newFeatureAdded) { findAllFeatures(); if(av.featuresDisplayed.size()<1) @@ -184,9 +185,9 @@ public class FeatureRenderer sfSize = sequenceFeatures.length; } - if(lastSequence==null || seq!=lastSequence) + if(lastSeq==null || seq!=lastSeq) { - lastSequence = seq; + lastSeq = seq; sequenceFeatures = seq.getDatasetSequence().getSequenceFeatures(); sfSize = sequenceFeatures.length; } @@ -202,8 +203,8 @@ public class FeatureRenderer if(!offscreenRender) { - spos = lastSequence.findPosition(start); - epos = lastSequence.findPosition(end); + spos = lastSeq.findPosition(start); + epos = lastSeq.findPosition(end); } @@ -211,6 +212,7 @@ public class FeatureRenderer for(int renderIndex=0; renderIndex