X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FOverviewCanvas.java;h=5ea9c041f8a0615056055b89cf15544728e3d9d2;hb=04e88679fd837e9fe36d186e5eacdd5f13a89927;hp=a0466d3c85174e2f9a3969c30aaa20079d566149;hpb=bf8f5b51784adf424e3817f5449d25d7a88be2f9;p=jalview.git diff --git a/src/jalview/appletgui/OverviewCanvas.java b/src/jalview/appletgui/OverviewCanvas.java index a0466d3..5ea9c04 100644 --- a/src/jalview/appletgui/OverviewCanvas.java +++ b/src/jalview/appletgui/OverviewCanvas.java @@ -21,6 +21,7 @@ package jalview.appletgui; import jalview.renderer.OverviewRenderer; +import jalview.renderer.OverviewResColourFinder; import jalview.viewmodel.OverviewDimensions; import java.awt.Color; @@ -29,7 +30,9 @@ import java.awt.Dimension; import java.awt.Frame; import java.awt.Graphics; import java.awt.Image; +import java.awt.image.BufferedImage; +@SuppressWarnings("serial") public class OverviewCanvas extends Component { // This is set true if the alignment view changes whilst @@ -48,27 +51,29 @@ public class OverviewCanvas extends Component private AlignViewport av; - // Can set different properties in this seqCanvas than - // main visible SeqCanvas - private SequenceRenderer sr; + private boolean showSequenceFeatures; + + private boolean showAnnotation; + + private jalview.api.FeatureRenderer featureRenderer; private jalview.renderer.seqfeatures.FeatureRenderer fr; private Frame nullFrame; - public OverviewCanvas(OverviewDimensions overviewDims, + private OverviewPanel panel; + + public OverviewCanvas(OverviewPanel panel, + OverviewDimensions overviewDims, AlignViewport alignvp) { + this.panel = panel; od = overviewDims; av = alignvp; nullFrame = new Frame(); nullFrame.addNotify(); - sr = new SequenceRenderer(av); - sr.graphics = nullFrame.getGraphics(); - sr.renderGaps = false; - sr.forOverview = true; fr = new jalview.renderer.seqfeatures.FeatureRenderer(av); } @@ -108,24 +113,56 @@ public class OverviewCanvas extends Component } public void draw(boolean showSequenceFeatures, boolean showAnnotation, - FeatureRenderer transferRenderer) + jalview.api.FeatureRenderer featureRenderer) { - miniMe = null; + this.showSequenceFeatures = showSequenceFeatures; + this.showAnnotation = showAnnotation; + this.featureRenderer = featureRenderer; if (showSequenceFeatures) { - fr.transferSettings(transferRenderer); + fr.transferSettings(featureRenderer); } setPreferredSize(new Dimension(od.getWidth(), od.getHeight())); - or = new OverviewRenderer(sr, fr, od); - miniMe = nullFrame.createImage(od.getWidth(), od.getHeight()); + or = new OverviewRenderer(panel.ap, fr, od, av.getAlignment(), + av.getResidueShading(), new OverviewResColourFinder()); offscreen = nullFrame.createImage(od.getWidth(), od.getHeight()); - - miniMe = or.draw(od.getRows(av.getAlignment()), + or.draw(od.getRows(av.getAlignment()), od.getColumns(av.getAlignment())); + } + + @Override + public void update(Graphics g) + { + paint(g); + } + + @Override + public void paint(Graphics g) + { + if (miniMe != null) + { + Graphics og = offscreen.getGraphics(); + og.drawImage(miniMe, 0, 0, this); + og.setColor(Color.red); + od.drawBox(og); + g.drawImage(offscreen, 0, 0, this); + og.dispose(); + } + } + /** + * Nulls references to protect against potential memory leaks + */ + void dispose() + { + od = null; + } + + public void finalizeDraw(BufferedImage miniMe) + { Graphics mg = miniMe.getGraphics(); // checks for conservation annotation to make sure overview works for DNA @@ -134,16 +171,14 @@ public class OverviewCanvas extends Component { mg.translate(0, od.getSequencesHeight()); or.drawGraph(mg, av.getAlignmentConservationAnnotation(), - av.getCharWidth(), od.getGraphHeight(), - od.getColumns(av.getAlignment())); + od.getGraphHeight(), od.getColumns(av.getAlignment())); mg.translate(0, -od.getSequencesHeight()); } - System.gc(); if (restart) { restart = false; - draw(showSequenceFeatures, showAnnotation, transferRenderer); + draw(showSequenceFeatures, showAnnotation, featureRenderer); } else { @@ -151,23 +186,4 @@ public class OverviewCanvas extends Component } } - @Override - public void update(Graphics g) - { - paint(g); - } - - @Override - public void paint(Graphics g) - { - Graphics og = offscreen.getGraphics(); - if (miniMe != null) - { - og.drawImage(miniMe, 0, 0, this); - og.setColor(Color.red); - od.drawBox(og); - g.drawImage(offscreen, 0, 0, this); - } - } - }