Return accurate RGB for transparent residues
authoramwaterhouse <Andrew Waterhouse>
Thu, 10 Nov 2005 11:04:37 +0000 (11:04 +0000)
committeramwaterhouse <Andrew Waterhouse>
Thu, 10 Nov 2005 11:04:37 +0000 (11:04 +0000)
src/jalview/gui/FeatureRenderer.java
src/jalview/gui/SequenceRenderer.java

index 829bafb..fcd952b 100755 (executable)
@@ -24,6 +24,8 @@ import java.awt.*;
 \r
 import java.util.*;\r
 \r
+import java.awt.image.*;\r
+\r
 \r
 /**\r
  * DOCUMENT ME!\r
@@ -41,6 +43,7 @@ public class FeatureRenderer
     float transparency = 1.0f;\r
     FontMetrics fm;\r
     int charOffset;\r
+    boolean drawText = true;\r
 \r
     // The following vector holds the features which are\r
     // to be added, in the correct order or rendering\r
@@ -58,6 +61,29 @@ public class FeatureRenderer
     }\r
 \r
     /**\r
+     * This is used by the Molecule Viewer to get the accurate colour\r
+     * of the rendered sequence\r
+     */\r
+    BufferedImage bi;\r
+    public Color findFeatureColour(Color initialCol, SequenceI seq, int i)\r
+    {\r
+      if(!av.showSequenceFeatures)\r
+        return initialCol;\r
+\r
+      if(bi==null)\r
+        bi = new BufferedImage(1,1,BufferedImage.TYPE_INT_RGB);\r
+\r
+      drawText = false;\r
+      bi.getGraphics().setColor(initialCol);\r
+      bi.getGraphics().fillRect(0, 0, 1, 1);\r
+      drawSequence(bi.getGraphics(), seq, i, i, 0, 0, 1, 1);\r
+      drawText = true;\r
+\r
+      return new Color(bi.getRGB(0, 0));\r
+    }\r
+\r
+\r
+    /**\r
      * DOCUMENT ME!\r
      *\r
      * @param g DOCUMENT ME!\r
@@ -74,7 +100,8 @@ public class FeatureRenderer
                              int start, int end, int x1, int y1, int width, int height)\r
     {\r
 \r
-      if (seq.getDatasetSequence().getSequenceFeatures() == null)\r
+      if (seq.getDatasetSequence().getSequenceFeatures() == null\r
+          || seq.getDatasetSequence().getSequenceFeatures().size()==0)\r
         return;\r
 \r
       fm = g.getFontMetrics();\r
@@ -89,7 +116,7 @@ public class FeatureRenderer
 \r
       String type;\r
       SequenceFeature sf;\r
-      if (featuresDisplayed == null || featuresDisplayed.size()==0)\r
+      if (featuresDisplayed == null)\r
         findAllFeatures();\r
 \r
       Enumeration e = featuresDisplayed.elements(), e2;\r
@@ -171,12 +198,14 @@ public class FeatureRenderer
 \r
             g.fillRect( (i - start) * width, y1, width, height);\r
 \r
-            g.setColor(Color.white);\r
-\r
-            charOffset = (width - fm.charWidth(s)) / 2;\r
-            g.drawString(String.valueOf(s),\r
-                         charOffset + x1 + (width * (i - start)),\r
-                         (y1 + height) - height/5);//pady = height / 5;\r
+            if(drawText)\r
+           {\r
+             g.setColor(Color.white);\r
+             charOffset = (width - fm.charWidth(s)) / 2;\r
+             g.drawString(String.valueOf(s),\r
+                          charOffset + x1 + (width * (i - start)),\r
+                          (y1 + height) - height / 5); //pady = height / 5;\r
+           }\r
           }\r
         }\r
     }\r
index b961b2c..c431e7c 100755 (executable)
@@ -23,6 +23,7 @@ import jalview.datamodel.*;
 import jalview.schemes.*;\r
 \r
 import java.awt.*;\r
+import java.awt.image.BufferedImage;\r
 \r
 \r
 /**\r
@@ -77,6 +78,23 @@ public class SequenceRenderer
         return resBoxColour;\r
     }\r
 \r
+    BufferedImage bi;\r
+    public Color findSequenceColour(Color initialCol, SequenceI seq, int i)\r
+    {\r
+      if (bi == null)\r
+        bi = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);\r
+\r
+      bi.getGraphics().setColor(initialCol);\r
+      bi.getGraphics().fillRect(0, 0, 1, 1);\r
+      allGroups = null;\r
+      graphics = bi.getGraphics();\r
+\r
+      drawBoxes(seq, i,i, 0, 0, 1,1);\r
+\r
+      return new Color(bi.getRGB(0, 0));\r
+    }\r
+\r
+\r
     /**\r
      * DOCUMENT ME!\r
      *\r