X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Frenderer%2FOverviewRenderer.java;h=56dba82efb9846c665f9e79360c0159f769c5a9d;hb=a435323c67f5dd67ab887bb0c71cf493d04c9272;hp=2f8f5fe75d60dee7001c69218af637f6f3d911c6;hpb=d9ec1e848018a92a6d0883b13a25038e279e4ee9;p=jalview.git diff --git a/src/jalview/renderer/OverviewRenderer.java b/src/jalview/renderer/OverviewRenderer.java index 2f8f5fe..56dba82 100644 --- a/src/jalview/renderer/OverviewRenderer.java +++ b/src/jalview/renderer/OverviewRenderer.java @@ -23,7 +23,9 @@ package jalview.renderer; import jalview.api.AlignmentColsCollectionI; import jalview.api.AlignmentRowsCollectionI; import jalview.datamodel.AlignmentAnnotation; +import jalview.datamodel.AlignmentI; import jalview.datamodel.Annotation; +import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.renderer.seqfeatures.FeatureColourFinder; import jalview.renderer.seqfeatures.FeatureRenderer; @@ -42,8 +44,6 @@ public class OverviewRenderer private FeatureColourFinder finder; - private jalview.api.SequenceRenderer sr; - // image to render on private BufferedImage miniMe; @@ -56,11 +56,22 @@ public class OverviewRenderer // flag to indicate whether to halt drawing private volatile boolean redraw = false; - public OverviewRenderer(jalview.api.SequenceRenderer seqRenderer, - FeatureRenderer fr, OverviewDimensions od) + // reference to alignment, needed to get sequence groups + private AlignmentI al; + + private ResidueShaderI shader; + + private ResidueColourFinder resColFinder; + + public OverviewRenderer(FeatureRenderer fr, OverviewDimensions od, + AlignmentI alignment, + ResidueShaderI resshader) { - sr = seqRenderer; finder = new FeatureColourFinder(fr); + resColFinder = new OverviewResColourFinder(); + + al = alignment; + shader = resshader; pixelsPerCol = od.getPixelsPerCol(); pixelsPerSeq = od.getPixelsPerSeq(); @@ -93,7 +104,10 @@ public class OverviewRenderer // get details of this alignment row SequenceI seq = rows.getSequence(alignmentRow); - + + // rate limiting step when rendering overview for lots of groups + SequenceGroup[] allGroups = al.findAllGroups(seq); + // calculate where this row extends to in pixels int endRow = Math.min(Math.round((seqIndex + 1) * pixelsPerSeq) - 1, miniMe.getHeight() - 1); @@ -116,9 +130,8 @@ public class OverviewRenderer // panel if (pixelCol <= endCol) { - rgbcolor = getColumnColourFromSequence(seq, - alignmentCol, - finder); + rgbcolor = getColumnColourFromSequence(allGroups, seq, + alignmentCol, finder); // fill in the appropriate number of pixels for (int row = pixelRow; row <= endRow; ++row) @@ -152,14 +165,17 @@ public class OverviewRenderer * FeatureColourFinder to use * @return colour of sequence at this position, as RGB */ - private int getColumnColourFromSequence(jalview.datamodel.SequenceI seq, + private int getColumnColourFromSequence(SequenceGroup[] allGroups, + jalview.datamodel.SequenceI seq, int lastcol, FeatureColourFinder fcfinder) { Color color = Color.white; if ((seq != null) && (seq.getLength() > lastcol)) { - color = sr.getResidueColour(seq, lastcol, fcfinder); + color = resColFinder.getResidueColour(true, shader, allGroups, seq, + lastcol, + fcfinder); } return color.getRGB();