X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Frenderer%2Fseqfeatures%2FFeatureColourFinder.java;h=712c9f445f20ef6d3ad6eb45b1d85e4dee10814a;hb=45b405507491a3d15d2b6b2c4f115a840945b28f;hp=703f220efa4acd60e4c2869425b0236ea17a45b3;hpb=07179fa211fc224a57afbb79f6e8239f36fbf6f0;p=jalview.git diff --git a/src/jalview/renderer/seqfeatures/FeatureColourFinder.java b/src/jalview/renderer/seqfeatures/FeatureColourFinder.java index 703f220..712c9f4 100644 --- a/src/jalview/renderer/seqfeatures/FeatureColourFinder.java +++ b/src/jalview/renderer/seqfeatures/FeatureColourFinder.java @@ -23,10 +23,12 @@ package jalview.renderer.seqfeatures; import jalview.api.FeatureRenderer; import jalview.api.FeaturesDisplayedI; import jalview.datamodel.SequenceI; +import jalview.util.Platform; import jalview.viewmodel.seqfeatures.FeatureRendererModel; import java.awt.Color; import java.awt.Graphics; +import java.awt.Graphics2D; import java.awt.image.BufferedImage; /** @@ -117,6 +119,53 @@ public class FeatureColourFinder return c; } + public int findFeatureColourInt(int defaultColour, SequenceI seq, + int column) + { + // if (noFeaturesDisplayed()) + // { + // return defaultColour; + // } + + Graphics2D g = null; + + /* + * if transparency applies, provide a notional 1x1 graphics context + * that has been primed with the default colour + */ + if (featureRenderer.getTransparency() != 1f) + { + g = (Graphics2D) goff; + if (Platform.isJS()) + { + // Clear the HTML5 canvas color. + // otherwise we get a smearing. + // For whatever reason, this is necessary BH 2019.10.01. + g.setColor(Color.white); + g.fillRect(0, 0, 1, 1); + } + 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 c.getRGB(); + } + if (Platform.isJS()) + { + // BH 2019.10.01 because for JavaScript the pixel itself + // is a resource that needs to be recreated in getRGB(0,0) + offscreenImage.flush(); + } + return offscreenImage.getRGB(0, 0); + } /** * Answers true if feature display is turned off, or there are no features * configured to be visible