validCharWidth moved to viewport
authoramwaterhouse <Andrew Waterhouse>
Fri, 28 Apr 2006 13:38:39 +0000 (13:38 +0000)
committeramwaterhouse <Andrew Waterhouse>
Fri, 28 Apr 2006 13:38:39 +0000 (13:38 +0000)
src/jalview/gui/AlignViewport.java
src/jalview/gui/AnnotationPanel.java
src/jalview/gui/FeatureRenderer.java
src/jalview/gui/SeqPanel.java
src/jalview/gui/SequenceRenderer.java

index 5b5b1f3..d4ba5ea 100755 (executable)
@@ -61,6 +61,7 @@ public class AlignViewport
     SequenceGroup selectionGroup;\r
     int charHeight;\r
     int charWidth;\r
+    boolean validCharWidth;\r
     int wrappedWidth;\r
     Font font;\r
     AlignmentI alignment;\r
@@ -624,6 +625,7 @@ public class AlignViewport
         java.awt.FontMetrics fm = c.getFontMetrics(font);\r
         setCharHeight(fm.getHeight());\r
         setCharWidth(fm.charWidth('M'));\r
+        validCharWidth = true;\r
     }\r
 \r
     /**\r
index 232a60c..f9ed690 100755 (executable)
@@ -51,7 +51,6 @@ public class AnnotationPanel extends JPanel implements MouseListener,
     BufferedImage image;\r
     Graphics2D gg;\r
     FontMetrics fm;\r
-    boolean validCharWidth;\r
     int imgWidth = 0;\r
     boolean fastPaint = false;\r
 \r
@@ -643,7 +642,6 @@ public class AnnotationPanel extends JPanel implements MouseListener,
       if (fm == null)\r
         fm = g.getFontMetrics();\r
 \r
-      validCharWidth = fm.charWidth('M') <= av.charWidth;\r
 \r
         g.setColor(Color.white);\r
         g.fillRect(0, 0, (endRes - startRes) * av.charWidth, getHeight());\r
@@ -654,8 +652,8 @@ public class AnnotationPanel extends JPanel implements MouseListener,
             g.setColor(Color.white);\r
             g.fillRect(0, 0, getWidth(), getHeight());\r
             g.setColor(Color.black);\r
-            if(validCharWidth)\r
-            g.drawString("Alignment has no annotations", 20, 15);\r
+            if(av.validCharWidth)\r
+              g.drawString("Alignment has no annotations", 20, 15);\r
 \r
             return;\r
         }\r
@@ -753,7 +751,7 @@ public class AnnotationPanel extends JPanel implements MouseListener,
                     }\r
                 }\r
 \r
-                if (validCharWidth && validRes &&\r
+                if (av.validCharWidth && validRes &&\r
                         (row.annotations[column].displayCharacter.length() > 0))\r
                 {\r
 \r
index 6fbdee8..fdbd7eb 100755 (executable)
@@ -319,7 +319,7 @@ public class FeatureRenderer
 \r
             g.fillRect( (i - start) * av.charWidth, y1, av.charWidth,av.charHeight);\r
 \r
-            if(offscreenRender)\r
+            if(offscreenRender || !av.validCharWidth)\r
               continue;\r
 \r
             g.setColor(Color.white);\r
index 9d2e84c..48651f9 100755 (executable)
@@ -635,6 +635,9 @@ public class SeqPanel extends JPanel implements MouseListener,
           ap.repaint();\r
         }\r
 \r
+        FontMetrics fm = getFontMetrics(av.getFont());\r
+        av.validCharWidth = fm.charWidth('M') <= av.charWidth;\r
+\r
         lastMousePress = evt.getPoint();\r
 \r
         return;\r
index 6350fba..02ea4b5 100755 (executable)
@@ -41,7 +41,6 @@ public class SequenceRenderer
     Graphics graphics;\r
     boolean monospacedFont;\r
     boolean forOverview = false;\r
-    boolean validCharWidth = true;\r
 \r
     /**\r
      * Creates a new SequenceRenderer object.\r
@@ -63,8 +62,6 @@ public class SequenceRenderer
         graphics = g;\r
         fm = g.getFontMetrics();\r
         monospacedFont = fm.getStringBounds("M",g).getWidth()==fm.getStringBounds("|",g).getWidth();\r
-        validCharWidth = fm.charWidth('M') <= av.charWidth;\r
-\r
         this.renderGaps = renderGaps;\r
     }\r
 \r
@@ -132,7 +129,7 @@ public class SequenceRenderer
 \r
         drawBoxes(seq, start, end, y1);\r
 \r
-        if (validCharWidth)\r
+        if (av.validCharWidth)\r
           drawText(seq, start, end, y1);\r
     }\r
 \r
@@ -344,17 +341,20 @@ public class SequenceRenderer
         char s = '~';\r
 \r
         // Need to find the sequence position here.\r
-        for (int i = start; i <= end; i++)\r
+        if(av.validCharWidth)\r
         {\r
+          for (int i = start; i <= end; i++)\r
+          {\r
             if (i < seq.getLength())\r
             {\r
-                s = seq.getSequence().charAt(i);\r
+              s = seq.getSequence().charAt(i);\r
             }\r
 \r
             charOffset = (av.charWidth - fm.charWidth(s)) / 2;\r
             graphics.drawString(String.valueOf(s),\r
-                charOffset + x1 + (av.charWidth * (i - start)),\r
-                (y1 + av.charHeight) - pady);\r
+                                charOffset + x1 + (av.charWidth * (i - start)),\r
+                                (y1 + av.charHeight) - pady);\r
+          }\r
         }\r
     }\r
 \r
@@ -364,17 +364,18 @@ public class SequenceRenderer
       int charOffset = 0;\r
       graphics.setColor(Color.black);\r
       graphics.fillRect(x1, y1, av.charWidth, av.charHeight);\r
-      graphics.setColor(Color.white);\r
 \r
-      graphics.setColor(Color.white);\r
-\r
-      char s = seq.getCharAt(res);\r
+      if(av.validCharWidth)\r
+      {\r
+        graphics.setColor(Color.white);\r
 \r
-      charOffset = (av.charWidth - fm.charWidth(s)) / 2;\r
-      graphics.drawString(String.valueOf(s),\r
-                charOffset + x1,\r
-                (y1 + av.charHeight) - pady);\r
+        char s = seq.getCharAt(res);\r
 \r
+        charOffset = (av.charWidth - fm.charWidth(s)) / 2;\r
+        graphics.drawString(String.valueOf(s),\r
+                            charOffset + x1,\r
+                            (y1 + av.charHeight) - pady);\r
+      }\r
 \r
     }\r
 }\r