}
/**
- * This is used by Structure Viewers and the Overview Window to get the
- * feature colour of the rendered sequence
- *
- * @param seq
- * @param column
- * @return
+ * {@inheritDoc}
*/
@Override
public Color findFeatureColour(SequenceI seq, int column, Graphics g)
Color renderedColour = null;
if (transparency == 1.0f)
{
+ /*
+ * simple case - just find the topmost rendered visible feature colour
+ */
renderedColour = findFeatureColour(seq, seq.findPosition(column));
}
else
{
+ /*
+ * transparency case - draw all visible features in render order to
+ * build up a composite colour on the graphics context
+ */
renderedColour = drawSequence(g, lastSeq, column, column, 0, true);
}
return renderedColour;
/**
* Draws the sequence features on the graphics context, or just determines the
- * colour that would be drawn (if flag offscreenrender is true).
+ * colour that would be drawn (if flag colourOnly is true). Returns the last
+ * colour drawn (which may not be the effective colour if transparency
+ * applies), or null if no feature is drawn in the range given.
*
* @param g
* the graphics context to draw on (may be null if colourOnly==true)
* @param seq
* @param start
- * start column (or sequence position in offscreenrender mode)
+ * start column
* @param end
- * end column (not used in offscreenrender mode)
+ * end column
* @param y1
* vertical offset at which to draw on the graphics
* @param colourOnly
return null;
}
- // updateFeatures();
+ /*
+ * check for new feature added while processing
+ */
+ updateFeatures();
/*
* inspect features in reverse renderOrder (the last in the array is
continue;
}
+ /*
+ * check the column position is within the feature range
+ * (or is one of the two contact positions for a contact feature)
+ */
boolean featureIsAtPosition = sequenceFeature.begin <= pos
&& sequenceFeature.end >= pos;
if (sequenceFeature.isContactFeature())