JAL-2811 Changed to overlay on via graphics context, not separate image
authorkiramt <k.mourao@dundee.ac.uk>
Tue, 14 Nov 2017 14:56:37 +0000 (14:56 +0000)
committerkiramt <k.mourao@dundee.ac.uk>
Tue, 14 Nov 2017 14:56:37 +0000 (14:56 +0000)
src/jalview/gui/SeqCanvas.java

index fdd51c2..7f5756d 100755 (executable)
@@ -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;
   }