4edc6959cf7d69e921234b6a4fffd82422c52f83
kate
  Sun Apr 15 22:17:54 2018 -0700
Temporary fix for reverse display issue in note #62.  Force to rectangle mode. refs #21109

diff --git src/hg/hgTracks/interactTrack.c src/hg/hgTracks/interactTrack.c
index e066ac5..ffa7882 100644
--- src/hg/hgTracks/interactTrack.c
+++ src/hg/hgTracks/interactTrack.c
@@ -323,48 +323,51 @@
     boolean sOnScreen = (s >= seqStart) && (s< seqEnd);
 
     // target region
     unsigned t = interactRegionCenter(inter->targetStart, inter->targetEnd);
     int tX = getX(t, seqStart, scale, xOff);
     int tWidth = regionFootWidth(inter->targetStart,inter->targetEnd, scale);
     boolean tOnScreen = (t >= seqStart) && (t< seqEnd);
 
     boolean isReversed = (tInfo->isDirectional && t < s);
     int interSize = abs(t - s);
     int peakHeight = (tInfo->sameHeight - 15) * ((double)interSize / tInfo->maxSize) + 10;
     int peak = yOff + peakHeight;
     if (vis == tvDense)
         peak = yOff + tg->height;
 
+    // NOTE: until time permits, force to rectangle when in reversed strand mode.
+
     if (sOnScreen)
         {
         // draw foot of source region
         hvGfxLine(hvg, sX - sWidth, yOff, sX + sWidth, yOff, color);
-        if (vis == tvDense || !tOnScreen || draw == DRAW_LINE)
+        if (vis == tvDense || !tOnScreen || draw == DRAW_LINE || hvg->rc)
             {
+            uglyf("sX: %d, peak: %d, color: %u. ", sX, peak, color);
             // draw vertical
             if (isReversed)
                 hvGfxDottedLine(hvg, sX, yOff, sX, peak, color, TRUE);
             else
                 hvGfxLine(hvg, sX, yOff, sX, peak, color);
             }
         }
     if (tOnScreen)
         {
         // draw foot of target region
         hvGfxLine(hvg, tX - tWidth, yOff, tX + tWidth, yOff, color);
-        if (vis == tvDense || !sOnScreen || draw == DRAW_LINE)
+        if (vis == tvDense || !sOnScreen || draw == DRAW_LINE || hvg->rc)
             {
             // draw vertical
             if (isReversed)
                 hvGfxDottedLine(hvg, tX, yOff, tX, peak, color, TRUE);
             else
                 hvGfxLine(hvg, tX, yOff, tX, peak, color);
             }
         }
     if (vis == tvDense)
         continue;
 
     // Full mode: add map boxes and draw interaction
     int chromStart = inter->chromStart;
     int chromEnd = inter->chromEnd;
     char *nameBuf = NULL;
@@ -391,31 +394,31 @@
     if ((s < seqStart && t < seqStart) || (s > seqEnd && t > seqEnd))
         continue;
 
     // Draw interaction and map boxes
     int lowerX = 0, upperX = 0;
     if (s < t)
         {
         lowerX = sOnScreen ? sX : xOff;
         upperX = tOnScreen ? tX : xOff + width;
         }
     else
         {
         lowerX = tOnScreen ? tX : xOff;
         upperX = sOnScreen ? sX : xOff + width;
         }
-    if (draw == DRAW_LINE || !sOnScreen || !tOnScreen)
+    if (draw == DRAW_LINE || !sOnScreen || !tOnScreen || hvg->rc)
         {
         // draw horizontal line between region centers at 'peak' height
         if (isReversed)
             hvGfxDottedLine(hvg, lowerX, peak, upperX, peak, color, TRUE);
         else
             hvGfxLine(hvg, lowerX, peak, upperX, peak, color);
 
         // map box on mid-point of horizontal line
         int xMap = lowerX + (double)(upperX-lowerX)/2;
         int yMap = peak-1;
         hvGfxBox(hvg, xMap, peak-1, 1, 3, peakColor);
         hvGfxBox(hvg, xMap, peak, 1, 1, MG_WHITE);
         mapBoxHgcOrHgGene(hvg, chromStart, chromEnd, xMap-1, yMap, 3, 3,
                            tg->track, itemBuf, statusBuf, NULL, TRUE, NULL);
         continue;