X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fapi%2FFeatureColourI.java;h=44bc321c8a213b138ac9012a7b9584c151356f29;hb=74d5ca6390288f6cd6cb445cccc728802806a29a;hp=d8363f4aeafa6d661191dffed71b4ddc8955cddc;hpb=8b9c85b131fbaa1b9b29c489b661089c0ea404bd;p=jalview.git diff --git a/src/jalview/api/FeatureColourI.java b/src/jalview/api/FeatureColourI.java index d8363f4..44bc321 100644 --- a/src/jalview/api/FeatureColourI.java +++ b/src/jalview/api/FeatureColourI.java @@ -1,13 +1,34 @@ +/* + * 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; + import java.awt.Color; public interface FeatureColourI { /** - * Answers true when either isColourByLabel, isAboveThreshold or - * isBelowThreshold answers true + * Answers true when the feature colour varies across the score range * * @return */ @@ -35,13 +56,31 @@ public interface FeatureColourI Color getMaxColour(); /** - * Answers true if the feature is coloured by label (description); only - * applicable when isGraduatedColour answers true + * 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; else answers false + * + * @return + */ + boolean isSimpleColour(); + + /** + * Answers true if the feature is coloured by label (description) or by text + * value of an attribute * * @return */ boolean isColourByLabel(); + void setColourByLabel(boolean b); + /** * Answers true if the feature is coloured below a threshold value; only * applicable when isGraduatedColour answers true @@ -50,6 +89,8 @@ public interface FeatureColourI */ boolean isBelowThreshold(); + void setBelowThreshold(boolean b); + /** * Answers true if the feature is coloured above a threshold value; only * applicable when isGraduatedColour answers true @@ -58,25 +99,117 @@ public interface FeatureColourI */ boolean isAboveThreshold(); + void setAboveThreshold(boolean b); + /** - * Answers true if the threshold is the min (or max) of the colour range; only - * applicable when isGraduatedColour answers true + * Returns the threshold value (if any), else zero * * @return */ - boolean isThresholdMinMax(); + float getThreshold(); + + 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(); + boolean isAutoScaled(); + + void setAutoScaled(boolean b); + + /** + * Returns the maximum score of the graduated colour range + * + * @return + */ + float getMax(); + + /** + * Returns the minimum score of the graduated colour range + * + * @return + */ + float getMin(); + + /** + * Answers true if either isAboveThreshold or isBelowThreshold answers true + * + * @return + */ + boolean hasThreshold(); + + /** + * 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 + */ + Color getColor(SequenceFeature feature); + + /** + * 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 + */ + void updateBounds(float min, float max); /** - * Answers true if ? + * Returns the colour in Jalview features file format + * + * @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 */ - boolean isLowToHigh(); + String getDescription(); }