From e5637e2ae4b902130a4fdc3208321a62ced984ff Mon Sep 17 00:00:00 2001 From: kiramt Date: Tue, 14 Nov 2017 14:56:37 +0000 Subject: [PATCH] JAL-2811 Changed to overlay on via graphics context, not separate image --- src/jalview/gui/SeqCanvas.java | 39 +++++++++------------------------------ 1 file changed, 9 insertions(+), 30 deletions(-) diff --git a/src/jalview/gui/SeqCanvas.java b/src/jalview/gui/SeqCanvas.java index fdd51c2..7f5756d 100755 --- a/src/jalview/gui/SeqCanvas.java +++ b/src/jalview/gui/SeqCanvas.java @@ -364,14 +364,11 @@ public class SeqCanvas extends JComponent implements ViewportListenerI ranges.getStartRes(), ranges.getEndRes(), ranges.getStartSeq(), ranges.getEndSeq()); - BufferedImage cursorImage = drawCursor(ranges.getStartRes(), - ranges.getEndRes(), ranges.getStartSeq(), ranges.getEndSeq()); - if ((img != null) && (fastPaint || (getVisibleRect().width != g.getClipBounds().width) || (getVisibleRect().height != g.getClipBounds().height))) { - BufferedImage lcimg = buildLocalImage(selectImage, cursorImage); + BufferedImage lcimg = buildLocalImage(selectImage); g.drawImage(lcimg, 0, 0, this); fastPaint = false; } @@ -411,9 +408,12 @@ public class SeqCanvas extends JComponent implements ViewportListenerI } // lcimg is a local *copy* of img which we'll draw selectImage on top of - BufferedImage lcimg = buildLocalImage(selectImage, cursorImage); + BufferedImage lcimg = buildLocalImage(selectImage); g.drawImage(lcimg, 0, 0, this); + } + drawCursor(g, ranges.getStartRes(), ranges.getEndRes(), + ranges.getStartSeq(), ranges.getEndSeq()); } /** @@ -496,8 +496,7 @@ public class SeqCanvas extends JComponent implements ViewportListenerI * Make a local image by combining the cached image img * with any selection */ - private BufferedImage buildLocalImage(BufferedImage selectImage, - BufferedImage cursorImage) + private BufferedImage buildLocalImage(BufferedImage selectImage) { // clone the cached image BufferedImage lcimg = new BufferedImage(img.getWidth(), img.getHeight(), @@ -512,12 +511,7 @@ public class SeqCanvas extends JComponent implements ViewportListenerI AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); g2d.drawImage(selectImage, 0, 0, this); } - // overlay cursor on lcimg - if (cursorImage != null) - { - g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); - g2d.drawImage(cursorImage, 0, 0, this); - } + g2d.dispose(); return lcimg; @@ -1151,13 +1145,6 @@ public class SeqCanvas extends JComponent implements ViewportListenerI } } } - - /* if (av.cursorMode && cursorY == i && cursorX >= startRes - && cursorX <= endRes) - { - seqRdr.drawCursor(nextSeq, cursorX, (cursorX - startRes) * charWidth, - offset + ((i - startSeq) * charHeight)); - }*/ } if (av.getSelectionGroup() != null @@ -1269,12 +1256,10 @@ public class SeqCanvas extends JComponent implements ViewportListenerI * @return a transparent image of the same size as the sequence canvas, with * the cursor drawn on it, if any */ - private BufferedImage drawCursor(int startRes, int endRes, int startSeq, + private void drawCursor(Graphics g, int startRes, int endRes, + int startSeq, int endSeq) { - // define our cursor image - BufferedImage cursorImage = null; - // convert the cursorY into a position on the visible alignment int cursor_ypos = av.getAlignment().getHiddenSequences() .findIndexWithoutHiddenSeqs(cursorY); @@ -1330,10 +1315,6 @@ public class SeqCanvas extends JComponent implements ViewportListenerI // now check if cursor is within range for x values if (cursor_xpos >= startx && cursor_xpos <= endx) { - // get a new image of the correct size - cursorImage = setupImage(); - Graphics2D g = (Graphics2D) cursorImage.getGraphics(); - // get the character the cursor is drawn at SequenceI seq = av.getAlignment().getSequenceAt(cursorY); char s = seq.getCharAt(cursorX); @@ -1344,8 +1325,6 @@ public class SeqCanvas extends JComponent implements ViewportListenerI g.dispose(); } } - - return cursorImage; } -- 1.7.10.2