From a0b602a4a6b25d6c1a31905f8aec55ebb9d5ec0b Mon Sep 17 00:00:00 2001 From: amwaterhouse Date: Mon, 30 Jan 2006 14:45:37 +0000 Subject: [PATCH] Faster painting --- src/jalview/appletgui/AlignmentPanel.java | 19 ++++++++++++++----- src/jalview/appletgui/SeqCanvas.java | 11 +++++------ src/jalview/appletgui/SequenceRenderer.java | 19 +++++++++---------- 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/jalview/appletgui/AlignmentPanel.java b/src/jalview/appletgui/AlignmentPanel.java index bece508..d7411fa 100755 --- a/src/jalview/appletgui/AlignmentPanel.java +++ b/src/jalview/appletgui/AlignmentPanel.java @@ -424,20 +424,29 @@ public class AlignmentPanel extends Panel implements AdjustmentListener overviewPanel.setBoxPosition(); } + int scrollX = av.startRes - oldX; + int scrollY = av.startSeq - oldY; + if (av.getWrapAlignment() || !fastPaint || MAC) { repaint(); } - else + else if(!seqPanel.seqCanvas.fastPaint) { - idPanel.idCanvas.fastPaint(av.getStartSeq() - oldY); - seqPanel.seqCanvas.fastPaint(av.getStartRes() - oldX, - av.getStartSeq() - oldY); + // Make sure we're not trying to draw a panel + // larger than the visible window + if(scrollX>av.endRes-av.startRes) + scrollX = av.endRes-av.startRes; + else if(scrollX 0) // scrollbar pulled right, image to the left { transX = (er - sr - horizontal) * av.charWidth; @@ -202,12 +205,9 @@ public class SeqCanvas gg.translate(transX, transY); - gg.setColor(Color.white); - gg.fillRect(0, 0, (er - sr + 1) * av.charWidth, (es - ss) * av.charHeight); drawPanel(gg, sr, er, ss, es, sr, ss, 0); gg.translate( -transX, -transY); - fastPaint = true; repaint(); } @@ -229,7 +229,6 @@ public class SeqCanvas public void paint(Graphics g) { - sr.renderGaps(av.renderGaps); if (fastPaint) { @@ -449,7 +448,7 @@ public class SeqCanvas if (av.showSequenceFeatures) { - fr.drawSequence(g, nextSeq, av.alignment.findAllGroups(nextSeq), x1, x2, + fr.drawSequence(g, nextSeq, x1, x2, (x1 - startx) * av.charWidth, offset + (i - starty) * av.charHeight, diff --git a/src/jalview/appletgui/SequenceRenderer.java b/src/jalview/appletgui/SequenceRenderer.java index c68e85c..889df36 100755 --- a/src/jalview/appletgui/SequenceRenderer.java +++ b/src/jalview/appletgui/SequenceRenderer.java @@ -75,7 +75,6 @@ public class SequenceRenderer } } - Image offscreen; public Color findSequenceColour(SequenceI seq, int i) { allGroups = av.alignment.findAllGroups(seq); @@ -155,22 +154,22 @@ public class SequenceRenderer public void drawText(SequenceI seq, int start, int end, int x1, int y1, int width, int height) { - int pady = height / 5; - int charOffset = 0; - char s=' '; - // Need to find the sequence position here. - String sequence = seq.getSequence(); + y1 += height - height / 5; // height/5 replaces pady + + int charOffset = 0; + // Need to find the sequence position here. if(end+1>=seq.getLength()) end = seq.getLength()-1; + char s = ' '; + for (int i = start; i <= end; i++) { graphics.setColor(Color.black); - s = sequence.charAt(i); - + s = seq.getCharAt(i); if (!renderGaps && jalview.util.Comparison.isGap(s)) { continue; @@ -212,8 +211,8 @@ public class SequenceRenderer charOffset = (width - fm.charWidth(s)) / 2; graphics.drawString(String.valueOf(s), - charOffset + x1 + width * (i - start), - y1 + height - pady); + charOffset + x1 + width * (i - start), + y1 ); } } -- 1.7.10.2