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;