package jalview.api; import jalview.datamodel.SequenceFeature; import java.awt.Color; public interface FeatureColourI { /** * Answers true when the feature colour varies across the score range * * @return */ boolean isGraduatedColour(); void setGraduatedColour(boolean b); /** * Returns the feature colour (when isGraduatedColour answers false) * * @return */ Color getColour(); /** * Returns the minimum colour (when isGraduatedColour answers true) * * @return */ Color getMinColour(); /** * Returns the maximum colour (when isGraduatedColour answers true) * * @return */ Color getMaxColour(); /** * Answers true if the feature has a single colour, i.e. if isColourByLabel() * and isGraduatedColour() both answer false * * @return */ boolean isSimpleColour(); /** * Answers true if the feature is coloured by label (description) * * @return */ boolean isColourByLabel(); void setColourByLabel(boolean b); /** * Answers true if the feature is coloured below a threshold value; only * applicable when isGraduatedColour answers true * * @return */ boolean isBelowThreshold(); void setBelowThreshold(boolean b); /** * Answers true if the feature is coloured above a threshold value; only * applicable when isGraduatedColour answers true * * @return */ boolean isAboveThreshold(); 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 * * @return */ boolean isThresholdMinMax(); void setThresholdMinMax(boolean b); /** * Returns the threshold value (if any), else zero * * @return */ float getThreshold(); void setThreshold(float f); 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 * * @param feature * @return */ 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 * * @param min * @param max */ void updateBounds(float min, float max); }