Create new image only on resize, set fontMetrics on new image
authoramwaterhouse <Andrew Waterhouse>
Fri, 26 Aug 2005 15:29:20 +0000 (15:29 +0000)
committeramwaterhouse <Andrew Waterhouse>
Fri, 26 Aug 2005 15:29:20 +0000 (15:29 +0000)
src/jalview/gui/AnnotationPanel.java

index 4d3fc0f..4f984fd 100755 (executable)
@@ -519,29 +519,38 @@ public class AnnotationPanel extends JPanel implements MouseListener,
      */\r
     public void paintComponent(Graphics g)\r
     {\r
-        g.setColor(Color.white);\r
-        g.fillRect(0, 0, getWidth(), getHeight());\r
+      g.setColor(Color.white);\r
+      g.fillRect(0, 0, getWidth(), getHeight());\r
 \r
-        if (fastPaint)\r
-        {\r
-            g.drawImage(image, 0, 0, this);\r
-            fastPaint = false;\r
+      if (fastPaint)\r
+      {\r
+        g.drawImage(image, 0, 0, this);\r
+        fastPaint = false;\r
+        return;\r
+      }\r
 \r
-            return;\r
-        }\r
+      imgWidth = (av.endRes - av.startRes + 1) * av.charWidth;\r
 \r
-        imgWidth = (av.endRes - av.startRes + 1) * av.charWidth;\r
+      if (image != null && imgWidth == image.getWidth())\r
+      {\r
+        //This will be called by a mouse over, tool tip etc\r
+        // no need to redraw whole image\r
+        g.drawImage(image, 0, 0, this);\r
+        fastPaint = false;\r
+        return;\r
+      }\r
 \r
-        image = new BufferedImage(imgWidth, ap.annotationPanel.getHeight(),\r
-                BufferedImage.TYPE_INT_RGB);\r
-        gg = (Graphics2D) image.getGraphics();\r
-        gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING,\r
-            RenderingHints.VALUE_ANTIALIAS_ON);\r
+      image = new BufferedImage(imgWidth, ap.annotationPanel.getHeight(),\r
+                                BufferedImage.TYPE_INT_RGB);\r
+      gg = (Graphics2D) image.getGraphics();\r
+      gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING,\r
+                          RenderingHints.VALUE_ANTIALIAS_ON);\r
 \r
-        gg.setFont(av.getFont());\r
+      gg.setFont(av.getFont());\r
+      fm = gg.getFontMetrics();\r
 \r
-        drawComponent(gg, av.startRes, av.endRes + 1);\r
-        g.drawImage(image, 0, 0, this);\r
+      drawComponent(gg, av.startRes, av.endRes + 1);\r
+      g.drawImage(image, 0, 0, this);\r
     }\r
 \r
     /**\r
@@ -583,7 +592,9 @@ public class AnnotationPanel extends JPanel implements MouseListener,
         gg.translate(-transX, 0);\r
 \r
         fastPaint = true;\r
+\r
         repaint();\r
+\r
     }\r
 \r
     /**\r
@@ -595,9 +606,6 @@ public class AnnotationPanel extends JPanel implements MouseListener,
      */\r
     public void drawComponent(Graphics2D g, int startRes, int endRes)\r
     {\r
-      if(fm==null)\r
-        fm = g.getFontMetrics();\r
-\r
         g.setColor(Color.white);\r
         g.fillRect(0, 0, (endRes - startRes) * av.charWidth, getHeight());\r
 \r