118634b1bb159357168a349dbf600f545e096f56 max Fri Jul 24 08:17:41 2026 -0700 Revert "hgTracks: strand-direction arrows on the zoomed-in codon/CDS and UTR display" This reverts commit ded41ea1968e30e2c248f65d1c9fec9793cb82fc. diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c index 4b1fc7fc6a6..e207cd5ef5f 100644 --- src/hg/hgTracks/simpleTracks.c +++ src/hg/hgTracks/simpleTracks.c @@ -864,91 +864,76 @@ int lineHeight, int heightPer, boolean allowOverflow) /* Most fixed height track groups will use this to figure out the height * they use. */ { int height; if ((height = setupForWiggle(tg, vis)) != 0) return height; int rows; double maxHeight = maximumTrackHeight(tg); int itemCount = slCount(tg->items); int maxItemsToUseOverflow = maxItemsToOverflow(tg); tg->heightPer = heightPer; tg->lineHeight = lineHeight; -boolean isCompactPack = trackDbSettingOn(tg->tdb, "compactPack"); - /* Note that the maxCount variable passed to packCountRowsOverflow() is tied to the maximum height allowed for a track and influences decisions about when to squish, dense, or overflow a track. If doing overflow try to pack all the items into the maxHeight area or put all the overflow into the last row. If not doing overflow allow the track enough rows to go over the maxHeight (thus if the spaceSaver fills up the total height will be more than maxHeight). */ switch (vis) { case tvFull: if (isTypeBedLike(tg)) { if(allowOverflow && itemCount < maxItemsToUseOverflow) rows = packCountRowsOverflow(tg, floor(maxHeight/tg->lineHeight), FALSE, allowOverflow, vis); else rows = packCountRowsOverflow(tg, floor(maxHeight/tg->lineHeight)+1, FALSE, FALSE, vis); } else { rows = slCount(tg->items); } break; case tvPack: { - if (isCompactPack) - { - tg->heightPer = heightPer / 2; - tg->lineHeight = tg->heightPer; - } if(allowOverflow && itemCount < maxItemsToUseOverflow) rows = packCountRowsOverflow(tg, floor(maxHeight/tg->lineHeight), TRUE, allowOverflow, vis); else rows = packCountRowsOverflow(tg, floor(maxHeight/tg->lineHeight)+1, TRUE, FALSE, vis); if (tdbIsCompositeChild(tg->tdb)) { boolean doHideEmpties = compositeChildHideEmptySubtracks(cart, tg->tdb, NULL, NULL); if (isCenterLabelsPackOff(tg) && !doHideEmpties) if (rows == 0) rows = 1; // compact pack mode, shows just side label } break; } case tvSquish: - { - if (isCompactPack) - { - tg->heightPer = 3; - tg->lineHeight = 3; - } - else { tg->heightPer = heightPer/2; if ((tg->heightPer & 1) == 0) tg->heightPer -= 1; tg->lineHeight = tg->heightPer + 1; - } if(allowOverflow && itemCount < maxItemsToUseOverflow) rows = packCountRowsOverflow(tg, floor(maxHeight/tg->lineHeight), FALSE, allowOverflow, vis); else rows = packCountRowsOverflow(tg, floor(maxHeight/tg->lineHeight)+1, FALSE, FALSE, vis); break; } case tvDense: default: rows = 1; break; } tg->height = rows * tg->lineHeight; return tg->height; } @@ -3171,31 +3156,31 @@ safecpy(aaAbbr, sizeof(aaAbbr), "Ter"); aaName = "termination"; } else if (aaLetter == 'X') // error/partial codon: nothing to show aaAbbr[0] = '\0'; else { aaToAbbr(aaLetter, aaAbbr, sizeof(aaAbbr)); aaName = aaToName(aaLetter); } dyStringPrintf(codonDy, "<b>Codon: </b> c.%d-%d (p.%d)<br>", cStart, cEnd, pPos); if (!isEmpty(aaAbbr)) { if (aaName != NULL) - dyStringPrintf(codonDy, "<b>Amino acid: </b> %s - %s<br>", aaAbbr, aaName); + dyStringPrintf(codonDy, "<b>Amino acid: </b> %s (%s)<br>", aaAbbr, aaName); else dyStringPrintf(codonDy, "<b>Amino acid: </b> %s<br>", aaAbbr); } } else if (lf->tallStart < lf->tallEnd) { // UTR block of a coding transcript (codonIndex 0, so no // c./p. above): label it with its HGVS UTR range. codonS/ // codonE span the whole UTR portion of this exon. boolean posStrand = (lf->orientation >= 0); int gFivePrime = posStrand ? codonS : codonE - 1; int gThreePrime = posStrand ? codonE - 1 : codonS; char loBuf[16], hiBuf[16]; utrHgvsCoord(lf, gFivePrime, loBuf, sizeof(loBuf)); utrHgvsCoord(lf, gThreePrime, hiBuf, sizeof(hiBuf)); @@ -4613,33 +4598,30 @@ if (barbRunX1 >= 0) clippedBarbs(hvg, barbRunX1+1, midY, barbRunX2-barbRunX1-2, tl.barbHeight, tl.barbSpacing, lf->orientation, barbColor, TRUE); if ((intronGap > 0) || chainLines) lfDrawSpecialGaps(lf, intronGap, chainLines, gapFactor, tg, hvg, xOff, y, scale, color, bColor, vis); if (vis != tvDense) { /* If highlighting differences between aligned sequence and genome when * zoomed way out, this must be done in a separate pass after exons are * drawn so that exons sharing the pixel don't overdraw differences. */ baseColorOverdrawDiff(tg, lf, hvg, xOff, y, scale, heightPer, qSeq, qOffset, psl, winStart, drawOpt); - /* When codons are colored, distribute strand arrows across the exons on top - * of the boxes (coding exons when too small to label, plus the UTRs). */ - baseColorDrawCdsArrows(tg, lf, hvg, xOff, y, scale, heightPer, winStart, drawOpt, color); if (psl && (indelShowQueryInsert || indelShowPolyA)) baseColorOverdrawQInsert(tg, lf, hvg, xOff, y, scale, heightPer, qSeq, qOffset, psl, font, winStart, drawOpt, indelShowQueryInsert, indelShowPolyA); } } static void lfSeriesDrawConnecter(struct linkedFeaturesSeries *lfs, struct hvGfx *hvg, int start, int end, double scale, int xOff, int midY, Color color, Color bColor, enum trackVisibility vis) /* Draw connection between two sets of linked features. */ { if (start != -1 && !lfs->noLine) { int x1 = round((double)((int)start-winStart)*scale) + xOff;