e5244b1de921b0252f9e62b383b06be78ec140a6
kate
  Fri Mar 9 10:53:48 2018 -0800
Additional detail on dense mode: highlight cross-chrom items by coloring magenta. refs #17512

diff --git src/hg/hgTracks/interactTrack.c src/hg/hgTracks/interactTrack.c
index 2b5f8bc..34f6481 100644
--- src/hg/hgTracks/interactTrack.c
+++ src/hg/hgTracks/interactTrack.c
@@ -12,30 +12,31 @@
 /* calculate height of all the interactions being displayed */
 {
 if ( tg->visibility == tvDense)
     return  tl.fontHeight;
 int min, max, deflt, current; 
 cartTdbFetchMinMaxPixels(cart, tg->tdb, 
                                 INTERACT_MINHEIGHT, INTERACT_MAXHEIGHT, atoi(INTERACT_DEFHEIGHT),
                                 &min, &max, &deflt, &current);
 return tg->height = current;
 }
 
 static Color interactItemColor(struct track *tg, void *item, struct hvGfx *hvg)
 /* Return color to draw an interaction */
 {
 struct interact *inter = item;
+
 struct rgbColor itemRgb;
 // There must be a better way...
 itemRgb.r = (inter->color & 0xff0000) >> 16;
 itemRgb.g = (inter->color & 0xff00) >> 8;
 itemRgb.b = inter->color & 0xff;
 return hvGfxFindColorIx(hvg, itemRgb.r, itemRgb.g, itemRgb.b);
 }
 
 void interactLoadItems(struct track *tg)
 /* Load all interact items in region */
 {
 loadSimpleBedWithLoader(tg, (bedItemLoader)interactLoad);
 }
 
 static void interactDrawItems(struct track *tg, int seqStart, int seqEnd,
@@ -107,30 +108,33 @@
 int fontHeight = vgGetFontPixelHeight(hvg->vg, font);
 int otherHeight = (nOther) ? 3 * fontHeight : 0;
 int sameHeight = (nSame) ? tg->height - otherHeight: 0;
 
 // Draw items
 for (inter=inters; inter; inter=inter->next)
     {
     char *otherChrom = interactOtherChrom(inter);
     safef(itemBuf, sizeof itemBuf, "%s", inter->name);
     struct dyString *ds = dyStringNew(0);
     dyStringPrintf(ds, "%s", inter->name);
     if (inter->score)
         dyStringPrintf(ds, " %d", inter->score);
     char *statusBuf = dyStringCannibalize(&ds);
 
+    if (vis == tvDense && interactOtherChrom(inter))
+        color = MG_MAGENTA;
+    else
         color = interactItemColor(tg, inter, hvg);
     
     // TODO: simplify by using start/end instead of center and width
     // This is a holdover from longRange track implementation
     unsigned lowStart, lowEnd, highStart, highEnd;
     if (otherChrom)
         {
         lowStart = highStart = inter->chromStart;
         lowEnd = highEnd = inter->chromEnd;
         }
     else if (inter->sourceStart < inter->targetStart)
         {
         lowStart = inter->sourceStart;
         lowEnd = inter->sourceEnd;
         highStart = inter->targetStart;