x++;
continue;
}
- Color gpcol = (cm==null) ? Color.white: cm.getColourForGroup(cm.getGroupsFor(column));
+ // ContactListI from viewport can map column -> group
+ Color gpcol = (cm==null) ? Color.white: contacts.getColourForGroup(); // cm.getColourForGroup(cm.getGroupsFor(column));
+
// feature still in development - highlight or omit regions hidden in
// the alignment - currently marks them as red rows
boolean maskHiddenCols = false;
- // TODO: pass visible column mask to the ContactGeometry object so it maps
+ // TODO: optionally pass visible column mask to the ContactGeometry object so it maps
// only visible contacts to geometry
// Bean holding mapping from contact list to pixels
+ // TODO: allow bracketing/limiting of range on contacts to render (like visible column mask but more flexible?)
+
+ // COntactListI provides mapping for column -> cm-groupmapping
final ContactGeometry cgeom = new ContactGeometry(contacts,
_aa.graphHeight);
for (int ht = y2, eht = y2
- _aa.graphHeight; ht >= eht; ht -= cgeom.pixels_step)
{
+
ContactGeometry.contactInterval ci = cgeom.mapFor(y2 - ht,
y2 - ht + cgeom.pixels_step);
// cstart = (int) Math.floor(((double) y2 - ht) * contacts_per_pixel);
boolean rowsel = false, containsHidden = false;
if (columnSelection != null)
{
- if (_aa.sequenceRef == null)
- {
- rowsel = columnSelection.intersects(ci.cStart, ci.cEnd);
- }
- else
- {
- // TODO check we have correctly mapped cstart to local sequence
- // numbering
- int s = _aa.sequenceRef.findIndex(ci.cStart);
- int e = _aa.sequenceRef.findIndex(ci.cEnd);
- if (maskHiddenCols && hasHiddenColumns)
- {
- // TODO: turn into function and create test !!
- Iterator<int[]> viscont = hiddenColumns
- .getVisContigsIterator(s, e, false);
- containsHidden = !viscont.hasNext();
- }
- if (s > 0 && s < _aa.sequenceRef.getLength())
- {
- rowsel = columnSelection.intersects(s, e);
- }
-
- }
+ rowsel = cgeom.intersects(ci, columnSelection, hiddenColumns, maskHiddenCols);
}
// TODO: show selected region
if (colsel || rowsel)