X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fjalview%2Fapi%2FFeatureColourI.java;h=98a37c4e93698cc7a846aae059506256ae98869d;hb=266d94fa55ce42491be2552bfcf2e2b0a7901c04;hp=2e82afd66592d0af28d42155af701a7b8fe3bc67;hpb=3e943322f9d66e8718316ba8bd03669adce65149;p=jalview.git
diff --git a/src/jalview/api/FeatureColourI.java b/src/jalview/api/FeatureColourI.java
index 2e82afd..98a37c4 100644
--- a/src/jalview/api/FeatureColourI.java
+++ b/src/jalview/api/FeatureColourI.java
@@ -1,3 +1,23 @@
+/*
+ * 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 .
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
package jalview.api;
import jalview.datamodel.SequenceFeature;
@@ -14,8 +34,6 @@ public interface FeatureColourI
*/
boolean isGraduatedColour();
- void setGraduatedColour(boolean b);
-
/**
* Returns the feature colour (when isGraduatedColour answers false)
*
@@ -38,6 +56,14 @@ public interface FeatureColourI
Color getMaxColour();
/**
+ * Returns the 'no value' colour (used when a feature lacks score, or the
+ * attribute, being used for colouring)
+ *
+ * @return
+ */
+ Color getNoColour();
+
+ /**
* Answers true if the feature has a single colour, i.e. if isColourByLabel()
* and isGraduatedColour() both answer false
*
@@ -46,7 +72,8 @@ public interface FeatureColourI
boolean isSimpleColour();
/**
- * Answers true if the feature is coloured by label (description)
+ * Answers true if the feature is coloured by label (description) or by text
+ * value of an attribute
*
* @return
*/
@@ -75,26 +102,21 @@ public interface FeatureColourI
void setAboveThreshold(boolean b);
/**
- * Answers true if the threshold is the minimum value (when
- * isAboveThreshold()) or maximum value (when isBelowThreshold()) of the
- * colour range; only applicable when isGraduatedColour and either
- * isAboveThreshold() or isBelowThreshold() answers true
+ * Returns the threshold value (if any), else zero
*
* @return
*/
- boolean isThresholdMinMax();
+ float getThreshold();
- void setThresholdMinMax(boolean b);
+ void setThreshold(float f);
/**
- * Returns the threshold value (if any), else zero
+ * Answers true if the colour varies between the actual minimum and maximum
+ * score values of the feature, or false if between absolute minimum and
+ * maximum values (or if not a graduated colour).
*
* @return
*/
- float getThreshold();
-
- void setThreshold(float f);
-
boolean isAutoScaled();
void setAutoScaled(boolean b);
@@ -121,7 +143,9 @@ public interface FeatureColourI
boolean hasThreshold();
/**
- * Returns the computed colour for the given sequence feature
+ * Returns the computed colour for the given sequence feature. Answers null if
+ * the score of this feature instance is outside the range to render (if any),
+ * i.e. lies below or above a configured threshold.
*
* @param feature
* @return
@@ -129,18 +153,10 @@ public interface FeatureColourI
Color getColor(SequenceFeature feature);
/**
- * Answers true if the feature has a simple colour, or is coloured by label,
- * or has a graduated colour and the score of this feature instance is within
- * the range to render (if any), i.e. does not lie below or above any
- * threshold set.
- *
- * @param feature
- * @return
- */
- boolean isColored(SequenceFeature feature);
-
- /**
- * Update the min-max range for a graduated colour scheme
+ * Update the min-max range for a graduated colour scheme. Note that the
+ * colour scheme may be configured to colour by feature score, or a
+ * (numeric-valued) attribute - the caller should ensure that the correct
+ * range is being set.
*
* @param min
* @param max
@@ -153,4 +169,47 @@ public interface FeatureColourI
* @return
*/
String toJalviewFormat(String featureType);
+
+ /**
+ * Answers true if colour is by attribute text or numerical value
+ *
+ * @return
+ */
+ boolean isColourByAttribute();
+
+ /**
+ * Answers the name of the attribute (and optional sub-attribute...) used for
+ * colouring if any, or null
+ *
+ * @return
+ */
+ String[] getAttributeName();
+
+ /**
+ * Sets the name of the attribute (and optional sub-attribute...) used for
+ * colouring if any, or null to remove this property
+ *
+ * @return
+ */
+ void setAttributeName(String... name);
+
+ /**
+ * Answers true if colour has a threshold set, and the feature score (or other
+ * attribute selected for colouring) is outwith the threshold.
+ *
+ * Answers false if not a graduated colour, or no threshold is set, or value
+ * is not outwith the threshold, or value is null or non-numeric.
+ *
+ * @param sf
+ * @return
+ */
+ boolean isOutwithThreshold(SequenceFeature sf);
+
+ /**
+ * Answers a human-readable text description of the colour, suitable for display
+ * as a tooltip, possibly internationalised for the user's locale.
+ *
+ * @return
+ */
+ String getDescription();
}