31059016e90d9d6d65e11f55808869efacb8d4e2
kate
  Tue Apr 10 18:16:17 2018 -0700
Add postscript for ellipse drawing. refs #21109

diff --git src/hg/hgTracks/interactTrack.c src/hg/hgTracks/interactTrack.c
index 39f6c19..1730595 100644
--- src/hg/hgTracks/interactTrack.c
+++ src/hg/hgTracks/interactTrack.c
@@ -338,30 +338,32 @@
     if (sOnScreen)
         {
         // draw foot of source region
         hvGfxLine(hvg, sX - sWidth, yOff, sX + sWidth, yOff, color);
         if (vis == tvDense || !tOnScreen || draw == DRAW_LINE)
             {
             // draw vertical
             if (isReversed)
                 hvGfxDottedLine(hvg, sX, yOff, sX, peak, color, TRUE);
             else
                 hvGfxLine(hvg, sX, yOff, sX, peak, color);
             }
         }
     if (tOnScreen)
         {
+if (sOnScreen)
+    //warn("interaction: %s", inter->name);
         // draw foot of target region
         hvGfxLine(hvg, tX - tWidth, yOff, tX + tWidth, yOff, color);
         if (vis == tvDense || !sOnScreen || draw == DRAW_LINE)
             {
             // 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
@@ -425,30 +427,31 @@
         {
         int peakX = ((upperX - lowerX + 1) / 2) + lowerX;
         int peakY = peak + 30; // admittedly a hack (obscure how to define ypeak of curve)
         int maxY = hvGfxCurve(hvg, lowerX, yOff, peakX, peakY, upperX, yOff, color, isReversed);
         // curve drawer does not use peakY as expected, so it returns actual max Y used
         // draw map box on peak
         hvGfxBox(hvg, peakX-1, maxY, 3, 1, peakColor);
         hvGfxBox(hvg, peakX, maxY, 1, 1, MG_WHITE);
         mapBoxHgcOrHgGene(hvg, chromStart, chromEnd, peakX, maxY, 3, 1,
                        tg->track, itemBuf, statusBuf, NULL, TRUE, NULL);
         }
     else if (draw == DRAW_ELLIPSE)
         {
         int yLeft = yOff + peakHeight;
         int yTop = yOff - peakHeight;
+//warn("hgTracks ellipse: left point: (%d,%d), top point: (%d,%d)", lowerX, yLeft, upperX, yTop);
         hvGfxEllipseDraw(hvg, lowerX, yLeft, upperX, yTop, color, ELLIPSE_BOTTOM, isReversed);
         // draw map box on peak
         int maxY = peakHeight + yOff;
         int peakX = ((upperX - lowerX + 1) / 2) + lowerX;
         hvGfxBox(hvg, peakX-1, maxY, 3, 1, peakColor);
         hvGfxBox(hvg, peakX, maxY, 1, 1, MG_WHITE);
         mapBoxHgcOrHgGene(hvg, chromStart, chromEnd, peakX, maxY, 3, 1,
                        tg->track, itemBuf, statusBuf, NULL, TRUE, NULL);
         }
     }
 }
 
 void interactDrawLeftLabels(struct track *tg, int seqStart, int seqEnd,
     struct hvGfx *hvg, int xOff, int yOff, int width, int height,
     boolean withCenterLabels, MgFont *font,