d4e14ca0a20861998ad7c807a6b2473ade5c3c4f max Wed Jul 6 06:31:12 2022 -0700 add label hints for doWiggle and maxWindowCoverage tracks, refs #29715 diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c index 5d2f762..12a16e6 100644 --- src/hg/hgTracks/simpleTracks.c +++ src/hg/hgTracks/simpleTracks.c @@ -352,46 +352,52 @@ /* Temporary function until all composite tracks point to their own children */ { return (tdbIsComposite(track->tdb) && track->subtracks != NULL); } Color slightlyLighterColor(struct hvGfx *hvg, Color color) /* Get slightly lighter shade of a color - closer to gray actually */ { struct rgbColor rgbColor = hvGfxColorIxToRgb(hvg, color); rgbColor.r = (rgbColor.r+128)/2; rgbColor.g = (rgbColor.g+128)/2; rgbColor.b = (rgbColor.b+128)/2; return hvGfxFindColorIx(hvg, rgbColor.r, rgbColor.g, rgbColor.b); } -boolean checkIfWiggling(struct cart *cart, struct track *tg) -/* Check to see if a track should be drawing as a wiggle. */ -{ -boolean doWiggle = cartOrTdbBoolean(cart, tg->tdb, "doWiggle" , FALSE); - -if (!doWiggle) +boolean winTooBigDoWiggle(struct cart *cart, struct track *tg) +/* return true if we wiggle because the window size exceeds a certain threshold? */ { +boolean doWiggle = FALSE; char *setting = trackDbSetting(tg->tdb, "maxWindowCoverage" ); if (setting) { unsigned size = sqlUnsigned(setting); if ((size > 0) && ((winEnd - winStart) > size)) doWiggle = TRUE; } +return doWiggle; } +boolean checkIfWiggling(struct cart *cart, struct track *tg) +/* Check to see if a track should be drawing as a wiggle. */ +{ +boolean doWiggle = cartOrTdbBoolean(cart, tg->tdb, "doWiggle" , FALSE); + +if (!doWiggle) + doWiggle = winTooBigDoWiggle(cart, tg); + if (doWiggle && isEmpty(tg->networkErrMsg)) { tg->drawLeftLabels = wigLeftLabels; tg->colorShades = shadesOfGray; tg->mapsSelf = TRUE; } return doWiggle; } struct sameItemNode /* sameItem node */ { struct sameItemNode *next; /* next node */ struct window *window; /* in which window - can use to detect duplicate keys */