/**
* Removes from the list of features any that have a feature group that is not
* displayed, or duplicate the location of a feature of the same type (unless
- * a graduated colour scheme is applied)
+ * a graduated colour scheme or colour by label is applied). Should be used
+ * only for features of the same feature colour (which normally implies the
+ * same feature type).
*
* @param features
* @param fc
return;
}
SequenceFeatures.sortFeatures(features, true);
- boolean graduated = fc != null && fc.isGraduatedColour();
+ boolean simpleColour = fc == null || fc.isSimpleColour();
SequenceFeature lastFeature = null;
Iterator<SequenceFeature> it = features.iterator();
* (checking type and isContactFeature as a fail-safe here, although
* currently they are guaranteed to match in this context)
*/
- if (!graduated)
+ if (simpleColour)
{
if (lastFeature != null && sf.getBegin() == lastFeature.getBegin()
&& sf.getEnd() == lastFeature.getEnd()
assertTrue(features.contains(sf5));
/*
- * filtering of co-located features with colour by label
+ * co-located features with colour by label
+ * should not get filtered
*/
features = seq.getSequenceFeatures();
FeatureColour fc = new FeatureColour(Color.black);
fc.setColourByLabel(true);
fr.filterFeaturesForDisplay(features, fc);
- assertEquals(features.size(), 3);
- assertTrue(features.contains(sf1) || features.contains(sf4));
- assertFalse(features.contains(sf1) && features.contains(sf4));
- assertFalse(features.contains(sf2));
+ assertEquals(features.size(), 4);
+ assertTrue(features.contains(sf1));
assertTrue(features.contains(sf3));
+ assertTrue(features.contains(sf4));
assertTrue(features.contains(sf5));
}
}