*/
package jalview.schemes;
-import jalview.analysis.Conservation;
import jalview.datamodel.AnnotatedCollectionI;
-import jalview.datamodel.ProfilesI;
import jalview.datamodel.SequenceCollectionI;
import jalview.datamodel.SequenceI;
public interface ColourSchemeI
{
/**
- * Returns the fixed colour for the colour scheme. For use when the colour
- * does not vary.
- *
- * @return
- */
- Color findColour();
-
- /**
- * Returns the colour for the given character. For use when the colour depends
- * only on the symbol.
- *
- * @param c
- * @return
- */
- Color findColour(char c);
-
- /**
* Returns the possibly context dependent colour for the given symbol at the
* aligned position in the given sequence. For example, the colour may depend
* on the symbol's relationship to the consensus residue for the column.
* @param symbol
* @param position
* @param seq
+ * @param consensusResidue
+ * the modal symbol (e.g. K) or symbols (e.g. KF) for the column
+ * @param pid
+ * the percentage identity of the column's consensus (if known)
* @return
*/
- Color findColour(char symbol, int position, SequenceI seq);
-
- /**
- * Assigns the given consensus profile for the colourscheme
- */
- void setConsensus(ProfilesI hconsensus);
-
- /**
- * Assigns the given conservation to the colourscheme
- *
- * @param c
- */
- void setConservation(Conservation c);
-
- /**
- * Enable or disable conservation shading for this colourscheme
- *
- * @param conservationApplied
- */
- void setConservationApplied(boolean conservationApplied);
-
- /**
- * Answers true if conservation shading is enabled for this colourscheme
- *
- * @return
- */
- boolean conservationApplied();
-
- /**
- * Sets the scale factor for bleaching of colour in unconserved regions
- *
- * @param i
- */
- void setConservationInc(int i);
-
- /**
- * Returns the scale factor for bleaching colour in unconserved regions
- *
- * @return
- */
- int getConservationInc();
-
- /**
- * Returns the percentage identity threshold for applying colourscheme
- *
- * @return
- */
- int getThreshold();
-
- /**
- * Sets the percentage identity threshold and type of %age identity
- * calculation for shading
- *
- * @param pct
- * 0..100 percentage identity for applying this colourscheme
- * @param ignoreGaps
- * when true, calculate PID without including gapped positions
- */
- void setThreshold(int pct, boolean ignoreGaps);
+ Color findColour(char symbol, int position, SequenceI seq,
+ String consensusResidue, float pid);
/**
* Recalculate dependent data using the given sequence collection, taking
/**
* Creates and returns a new instance of the colourscheme configured to colour
- * the given connection
+ * the given collection. Note that even simple colour schemes should return a
+ * new instance for each call to this method, as different instances may have
+ * differing shading by consensus or percentage identity applied.
*
* @param sg
* @param hiddenRepSequences
- * @return copy of current scheme with any inherited settings transfered
+ * @return copy of current scheme with any inherited settings transferred
*/
- ColourSchemeI applyTo(AnnotatedCollectionI sg,
+ ColourSchemeI getInstance(AnnotatedCollectionI sg,
Map<SequenceI, SequenceCollectionI> hiddenRepSequences);
/**
* @return
*/
String getSchemeName();
+
+ /**
+ * Answers true if the colour scheme depends only on the sequence symbol, and
+ * not on other information such as alignment consensus or annotation. (Note
+ * that simple colour schemes may have a fading by percentage identity or
+ * conservation overlaid.) Simple colour schemes can be propagated to
+ * structure viewers.
+ *
+ * @return
+ */
+ boolean isSimple();
+
+ /**
+ * Answers true if the colour scheme has a colour specified for gaps.
+ *
+ * @return
+ */
+ boolean hasGapColour();
}