X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Frenderer%2Fseqfeatures%2FFeatureColourFinder.java;h=d5784b001af2da2cd493b463c3ea9c3ff1281817;hb=a9177efb4097815d9a8031aa22700c61a7d6260a;hp=0c18d399ff48f17485674a47e48269a84910aa2f;hpb=5a5663e814e0af0dbe6061a257fb4fb1baebd4e3;p=jalview.git
diff --git a/src/jalview/renderer/seqfeatures/FeatureColourFinder.java b/src/jalview/renderer/seqfeatures/FeatureColourFinder.java
index 0c18d39..d5784b0 100644
--- a/src/jalview/renderer/seqfeatures/FeatureColourFinder.java
+++ b/src/jalview/renderer/seqfeatures/FeatureColourFinder.java
@@ -1,5 +1,26 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * Jalview is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ * PURPOSE. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see
+ * This method is not thread-safe when transparency is applied, since a shared + * BufferedImage would be used by all threads to hold the composite colour at + * a position. Each thread should use a separate instance of this class. * * @param defaultColour * @param seq * @param column - * alignment column position (base zero) + * alignment column position (0..) * @return */ public Color findFeatureColour(Color defaultColour, SequenceI seq, int column) { - if (!((FeatureRendererModel) featureRenderer).hasRenderOrder()) + if (noFeaturesDisplayed()) { return defaultColour; } - FeaturesDisplayedI displayed = featureRenderer.getFeaturesDisplayed(); - if (displayed == null || displayed.getVisibleFeatureCount() == 0) - { - return defaultColour; // nothing to see here folks - } - Graphics g = null; /* @@ -83,7 +102,7 @@ public class FeatureColourFinder } } - Color c = featureRenderer.findFeatureColour(seq, column, g); + Color c = featureRenderer.findFeatureColour(seq, column + 1, g); if (c == null) { return defaultColour; @@ -95,4 +114,40 @@ public class FeatureColourFinder } return c; } + + /** + * Answers true if feature display is turned off, or there are no features + * configured to be visible + * + * @return + */ + boolean noFeaturesDisplayed() + { + if (featureRenderer == null) + { + return true; + } + AlignViewportI av = featureRenderer.getViewport(); + if (av.isShowComplementFeatures()) + { + return false; + } + if (!av.isShowSequenceFeatures()) + { + return true; + } + + if (!((FeatureRendererModel) featureRenderer).hasRenderOrder()) + { + return true; + } + + FeaturesDisplayedI displayed = featureRenderer.getFeaturesDisplayed(); + if (displayed == null || displayed.getVisibleFeatureCount() == 0) + { + return true; + } + + return false; + } }