X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fapi%2FFeatureRenderer.java;h=762350e161663cfb719fe71d99a63bab608535a7;hb=3459a8a691cb22508d7067f240b7254e588e77d3;hp=0d0adaa333c678b460c0761259a07dfe652846ca;hpb=4d7f98a6dd54d9863ba449ec79dcd95d25ed863d;p=jalview.git diff --git a/src/jalview/api/FeatureRenderer.java b/src/jalview/api/FeatureRenderer.java index 0d0adaa..762350e 100644 --- a/src/jalview/api/FeatureRenderer.java +++ b/src/jalview/api/FeatureRenderer.java @@ -20,13 +20,17 @@ */ package jalview.api; -import jalview.datamodel.SequenceFeature; -import jalview.datamodel.SequenceI; - import java.awt.Color; +import java.awt.Graphics; +import java.beans.PropertyChangeListener; import java.util.List; import java.util.Map; +import jalview.datamodel.MappedFeatures; +import jalview.datamodel.SequenceFeature; +import jalview.datamodel.SequenceI; +import jalview.datamodel.features.FeatureMatcherSetI; + /** * Abstract feature renderer interface * @@ -37,18 +41,33 @@ public interface FeatureRenderer { /** - * compute the perceived colour for a given column position in sequenceI, - * taking transparency and feature visibility into account. + * Computes the feature colour for a given sequence and column position, + * taking into account sequence feature locations, feature colour schemes, + * render ordering, feature and feature group visibility, and transparency. + *
+ * The graphics argument should be provided if transparency is applied + * (getTransparency() < 1). With feature transparency, visible features are + * written to the graphics context and the composite colour may be read off + * from it. In this case, the returned feature colour is not the composite + * colour but that of the last feature drawn. + *
+ * If no transparency applies, then the graphics argument may be null, and the + * returned colour is the one that would be drawn for the feature. + *
+ * Returns null if there is no visible feature at the position. + *
+ * This is provided to support rendering of feature colours other than on the
+ * sequence alignment, including by structure viewers and the overview window.
+ * Note this method takes no account of whether the sequence or column is
+ * hidden.
*
- * @param col
- * - background colour (due to alignment/group shading schemes, etc).
- * @param sequenceI
- * - sequence providing features
- * @param r
- * - column position
+ * @param sequence
+ * @param column
+ * aligned column position (1..)
+ * @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.
@@ -60,17 +79,15 @@ public interface FeatureRenderer
* @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();
@@ -85,7 +102,7 @@ public interface FeatureRenderer
*
* @return
*/
- Map
+ * Returns null if
+ *
+ *
+ * This method does not check feature type visibility.
+ *
+ * @param feature
+ * @return
+ */
+ Color getColour(SequenceFeature feature);
+
+ /**
+ * Answers true if feature would be shown, else false. A feature is shown if
+ *
+ *
+ *
+ * @param feature
+ * @return
+ */
+ boolean isVisible(SequenceFeature feature);
+
+ /**
+ * Answers a bean containing a mapping, and a list of visible features in this
+ * alignment at a position (or range) which is mappable from the given
+ * sequence residue position in a mapped alignment. Features are returned in
+ * render order of feature type (on top last), with order within feature type
+ * undefined. If no features or mapping are found, answers null.
+ *
+ * @param sequence
+ * @param pos
+ * @return
+ */
+ MappedFeatures findComplementFeaturesAtResidue(SequenceI sequence,
+ int pos);
+
+ /**
+ * Sends a message to let any registered parties know that something about
+ * feature rendering has changed
+ */
+ void notifyFeaturesChanged();
+
+ /**
+ * register as a listener for notifyFeaturesChanged events
+ *
+ * @param ourListener
+ */
+ void addPropertyChangeListener(PropertyChangeListener ourListener);
+
+ /**
+ * remove a listener for notifyFeaturesChanged events
+ *
+ * @param ourListener
+ */
+ void removePropertyChangeListener(PropertyChangeListener ourListener);
+
+ /**
+ *
+ * @return associated alignment panel for this feature renderer (may return
+ * null)
+ */
+ AlignmentViewPanel getAlignPanel();
+
}