X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FFeatureRenderer.java;h=c126e246d8910bc7437e62254d098076fcc30896;hb=acc9fa6c42fcdde3d55b483f1dea91e0058be06e;hp=591fa79acc6b1f05044d684a90a8608f329ccb18;hpb=50779cf7013a8db695c53637578ab135da3ce5b1;p=jalview.git diff --git a/src/jalview/gui/FeatureRenderer.java b/src/jalview/gui/FeatureRenderer.java index 591fa79..c126e24 100755 --- a/src/jalview/gui/FeatureRenderer.java +++ b/src/jalview/gui/FeatureRenderer.java @@ -41,18 +41,19 @@ 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; - /** * Creates a new FeatureRenderer object. * @@ -61,7 +62,6 @@ public class FeatureRenderer public FeatureRenderer(AlignViewport av) { this.av = av; - initColours(); } public void transferSettings(FeatureRenderer fr) @@ -76,33 +76,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 +117,7 @@ public class FeatureRenderer { offscreenImage.setRGB(0,0,initialCol); drawSequence(offscreenImage.getGraphics(), - lastSequence, + lastSeq, column,column,0); return offscreenImage.getRGB(0,0); @@ -128,8 +125,8 @@ public class FeatureRenderer else { drawSequence(null, - lastSequence, - lastSequence.findPosition(column), + lastSeq, + lastSeq.findPosition(column), -1, -1); if (currentColour == null) @@ -157,8 +154,7 @@ public class FeatureRenderer */ // String type; // SequenceFeature sf; - int lastSequenceIndex=-1; - SequenceI lastSequence; + SequenceI lastSeq; SequenceFeature [] sequenceFeatures; int sfSize, sfindex, spos, epos; @@ -169,12 +165,13 @@ public class FeatureRenderer || seq.getDatasetSequence().getSequenceFeatures().length==0) return; - if(g!=null) fm = g.getFontMetrics(); - if (av.featuresDisplayed == null || renderOrder==null) + if (av.featuresDisplayed == null + || renderOrder==null + || newFeatureAdded) { findAllFeatures(); if(av.featuresDisplayed.size()<1) @@ -184,9 +181,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 +199,8 @@ public class FeatureRenderer if(!offscreenRender) { - spos = lastSequence.findPosition(start); - epos = lastSequence.findPosition(end); + spos = lastSeq.findPosition(start); + epos = lastSeq.findPosition(end); } @@ -211,6 +208,7 @@ public class FeatureRenderer for(int renderIndex=0; renderIndex