/* * 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 the feature colour varies across the score range * * @return */ boolean isGraduatedColour(); /** * 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(); /** * 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 * * @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 * * @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); /** * Returns the threshold value (if any), else zero * * @return */ float getThreshold(); void setThreshold(float f); /** * 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 */ 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); /** * 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 */ String getDescription(); }