JAL-3210 Improvements to eclipse detection. New src tree and SwingJS updated from...
[jalview.git] / src / jalview / renderer / seqfeatures / FeatureColourFinder.java
index cfe2735..8da880a 100644 (file)
@@ -48,6 +48,8 @@ public class FeatureColourFinder
    */
   private BufferedImage offscreenImage;
 
+  private Graphics goff;
+
   /**
    * Constructor
    * 
@@ -57,6 +59,7 @@ public class FeatureColourFinder
   {
     featureRenderer = fr;
     offscreenImage = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
+    goff = offscreenImage.getGraphics();
   }
 
   /**
@@ -94,7 +97,7 @@ public class FeatureColourFinder
      */
     if (featureRenderer.getTransparency() != 1f)
     {
-      g = offscreenImage.getGraphics();
+      g = goff;
       if (defaultColour != null)
       {
         offscreenImage.setRGB(0, 0, defaultColour.getRGB());
@@ -114,13 +117,48 @@ public class FeatureColourFinder
     return c;
   }
 
+  public int findFeatureColourInt(int defaultColour, SequenceI seq,
+          int column)
+  {
+    // if (noFeaturesDisplayed())
+    // {
+    // return defaultColour;
+    // }
+
+    Graphics g = null;
+
+    /*
+     * if transparency applies, provide a notional 1x1 graphics context 
+     * that has been primed with the default colour
+     */
+    if (featureRenderer.getTransparency() != 1f)
+    {
+      g = goff;
+      if (defaultColour != 0)
+      {
+        offscreenImage.setRGB(0, 0, defaultColour);
+      }
+    }
+
+    Color c = featureRenderer.findFeatureColour(seq, column + 1, g);
+    if (c == null)
+    {
+      return defaultColour;
+    }
+
+    if (g != null)
+    {
+      return offscreenImage.getRGB(0, 0);
+    }
+    return c.getRGB();
+  }
   /**
    * Answers true if feature display is turned off, or there are no features
    * configured to be visible
    * 
    * @return
    */
-  boolean noFeaturesDisplayed()
+  public boolean noFeaturesDisplayed()
   {
     if (featureRenderer == null
             || !featureRenderer.getViewport().isShowSequenceFeatures())