X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqCanvas.java;h=de421ed2eb14ff44b12042f87edc8771fa1f9fbb;hb=4532dfefeac026198bfea1b9dbe84186e870bfc8;hp=d3e5d6d68d3ee6a25c6fc01c056671600f355d38;hpb=c59fb56cb143b05c5643a71f5b39996ac1cd2fef;p=jalview.git diff --git a/src/jalview/gui/SeqCanvas.java b/src/jalview/gui/SeqCanvas.java index d3e5d6d..de421ed 100755 --- a/src/jalview/gui/SeqCanvas.java +++ b/src/jalview/gui/SeqCanvas.java @@ -53,6 +53,57 @@ public class SeqCanvas extends JPanel } +public void fastPaint(int horizontal, int vertical) +{ + if(horizontal==0 && vertical==0) + { + return; + } + + + if (img==null || paintFlag) + { + repaint(); + return; + } + + gg.copyArea( 0,0, imgWidth, imgHeight, -horizontal*av.charWidth, -vertical*av.charHeight ); + + int sr=av.startRes, er=av.endRes+1, ss = av.startSeq, es = av.endSeq, transX=0, transY = 0; + if(horizontal>0) // scrollbar pulled right, image to the left + { + transX = (er-sr-horizontal)*av.charWidth; + sr = er - horizontal ; + } + else if(horizontal<0) + { + er = sr-horizontal; + } + + + + + if(vertical>0) // scroll down + { + transY = imgHeight - vertical*av.charHeight; + ss = es - vertical; + } + else if(vertical<0) + { + + es = ss-vertical; + + } + + gg.translate(transX, transY); + + drawPanel(gg, sr,er,ss,es,sr,ss,0); + + gg.translate( -transX, -transY ); + getGraphics().drawImage(img,0,0,this); + +} + /** * Definitions of startx and endx (hopefully): * SMJS This is what I'm working towards! @@ -66,17 +117,20 @@ public class SeqCanvas extends JPanel public void paintComponent(Graphics g) { + // this draws the whole of the alignment - if (img==null || imgWidth!=getWidth() || imgHeight!=getHeight() || paintFlag) - { imgWidth = getWidth(); imgHeight = getHeight(); + + imgWidth -= imgWidth%av.charWidth; + imgHeight-= imgHeight%av.charHeight; + img = createImage(imgWidth,imgHeight); gg = (Graphics2D)img.getGraphics(); gg.setFont(av.getFont()); gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); + gg.setClip(0,0,imgWidth, imgHeight); paintFlag = false; - } chunkWidth = getWidth()/av.charWidth; @@ -85,8 +139,8 @@ public class SeqCanvas extends JPanel av.setChunkHeight(chunkHeight); av.setChunkWidth(chunkWidth); - gg.setColor(Color.WHITE); - gg.fillRect(0,0,imgWidth,imgHeight); + g.setColor(Color.WHITE); + g.fillRect(0,0,getWidth(), getHeight()); if (av.getWrapAlignment()) drawWrappedPanel(gg, getWidth(), getHeight(), av.startRes); @@ -217,7 +271,7 @@ public class SeqCanvas extends JPanel inGroup = true; if (group == av.getSelectionGroup()) { - g.setStroke(new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 3f, new float[]{5f,2f,2f}, 0f )); + // g.setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 3f, new float[]{5f,2f,2f}, 0f )); g.setColor(Color.RED); } else