import jalview.datamodel.SequenceI;
import java.awt.Color;
+import java.awt.Graphics;
import java.util.List;
import java.util.Map;
{
/**
- * compute the perceived colour for a given column position in sequenceI,
- * taking transparency and feature visibility into account.
+ * Returns the combined feature colour for a given sequence and column
+ * position, taking into account feature colour schemes, ordering, feature and
+ * feature group visibility, and transparency. Returns null if there is no
+ * visible feature at the position.
+ * <p>
+ * The Graphics argument is optional and may be null if no transparency is
+ * applied. With feature transparency, visible features are written to the
+ * graphics context and the composite colour can be read off.
+ * <p>
+ * This is provided for use by Structure Viewers and the Overview Window to
+ * get the feature colour of the rendered sequence.
*
- * @param col
- * - background colour (due to alignment/group shading schemes, etc).
- * @param sequenceI
- * - sequence providing features
- * @param r
- * - column position
+ * @param sequence
+ * @param column
+ * @param g
* @return
*/
- Color findFeatureColour(Color col, SequenceI sequenceI, int r);
+ Color findFeatureColour(SequenceI sequence, int column, Graphics g);
/**
* trigger the feature discovery process for a newly created feature renderer.
* @param ft
* @return display style for a feature
*/
- Object getFeatureStyle(String ft);
+ FeatureColourI getFeatureStyle(String ft);
/**
* update the feature style for a particular feature
*
* @param ft
* @param ggc
- * - currently allows java.awt.Color and
- * jalview.schemes.GraduatedColor
*/
- void setColour(String ft, Object ggc);
+ void setColour(String ft, FeatureColourI ggc);
AlignViewportI getViewport();
*
* @return
*/
- Map<String, Object> getFeatureColours();
+ Map<String, FeatureColourI> getFeatureColours();
/**
* query the alignment view to find all features
*
* @return
*/
- Map<String, Object> getDisplayedFeatureCols();
+ Map<String, FeatureColourI> getDisplayedFeatureCols();
/**
* get all registered groups
void setGroupVisibility(String group, boolean visible);
/**
- * locate features at a particular position on the given sequence
+ * Returns features at the specified position on the given sequence.
+ * Non-positional features are not included.
*
* @param sequence
* @param res
List<SequenceFeature> findFeaturesAtRes(SequenceI sequence, int res);
/**
+ * get current displayed types, in ordering of rendering (on top last)
*
- * @return true if the rendering platform supports transparency
- */
- boolean isTransparencyAvailable();
-
- /**
- * get current displayed types
- *
- * @return
+ * @return a (possibly empty) list of feature types
*/
- String[] getDisplayedFeatureTypes();
+ List<String> getDisplayedFeatureTypes();
/**
* get current displayed groups
*
- * @return
+ * @return a (possibly empty) list of feature groups
*/
- String[] getDisplayedFeatureGroups();
+ List<String> getDisplayedFeatureGroups();
/**
* display all features of these types
*/
void setVisible(String featureType);
+ /**
+ * Sets the transparency value, between 0 (full transparency) and 1 (no
+ * transparency)
+ *
+ * @param value
+ */
+ void setTransparency(float value);
+
+ /**
+ * Returns the transparency value, between 0 (full transparency) and 1 (no
+ * transparency)
+ *
+ * @return
+ */
+ float getTransparency();
}