58502ff9a4db966bdad267df1bc713fcc1b660b3 kate Wed Feb 6 17:47:52 2019 -0800 Cleanup regeneron features. refs #22739 diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index ebd4948..07de026 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -1235,30 +1235,38 @@ Color maybeDarkerLabels(struct track *track, struct hvGfx *hvg, Color color) /* For tracks having light track display but needing a darker label */ { if (trackDbSetting(track->tdb, "darkerLabels")) { struct hsvColor hsv = mgRgbToHsv(mgColorIxToRgb(NULL, color)); // check if really pale if (hsv.s < 500 ||(hsv.h > 40.0 && hsv.h < 150.0)) return somewhatDarkerColor(hvg, color); return slightlyDarkerColor(hvg, color); } return color; } +boolean isCenterLabelsPackOff(struct track *track) +/* Check for trackDb setting to suppress center labels of composite in pack mode */ +{ +if (!track || !track->tdb) + return FALSE; +char *centerLabelsPack = trackDbSetting(track->tdb, "centerLabelsPack"); +return (centerLabelsPack && sameWord(centerLabelsPack, "off")); +} static int doLeftLabels(struct track *track, struct hvGfx *hvg, MgFont *font, int y) /* Draw left labels. Return y coord. */ { struct slList *prev = NULL; /* for sample tracks */ double minRangeCutoff, maxRangeCutoff; double minRange, maxRange; double min0, max0; char minRangeStr[32]; char maxRangeStr[32]; int ymin, ymax; @@ -1323,38 +1331,36 @@ else { sprintf( minRangeStr, "%d", (int)round(minRangeCutoff)); sprintf( maxRangeStr, "%d", (int)round(maxRangeCutoff)); } /* special label handling for wigMaf type tracks -- they display a left label in pack mode. To use the full mode labeling, temporarily set visibility to full. Restore savedVis later */ if (startsWith("bigMaf", track->tdb->type) || startsWith("wigMaf", track->tdb->type) || startsWith("maf", track->tdb->type)) vis = tvFull; /* behave temporarily like pack for these */ if (track->limitedVis == tvFull && isTypeBedLike(track)) vis = tvPack; -char *centerLabelsPack = NULL; switch (vis) { case tvHide: break; /* Do nothing; */ case tvPack: - centerLabelsPack = trackDbSetting(track->tdb, "centerLabelsPack"); - if (centerLabelsPack && sameWord(centerLabelsPack, "off")) + if (isCenterLabelsPackOff(track)) // draw left labels for pack mode track with center labels off { if (isCenterLabelIncluded(track)) y += fontHeight; hvGfxTextRight(hvg, leftLabelX, y, leftLabelWidth-1, track->lineHeight, labelColor, font, track->shortLabel); y += track->height; } else y += tHeight; break; case tvSquish: y += tHeight; break; case tvFull: @@ -4575,30 +4581,36 @@ struct window *window; for (window=windows, winTrack=track; window; window=window->next, winTrack=winTrack->nextWindow) { setGlobalsFromWindow(window); int trackHeight = trackPlusLabelHeight(winTrack, fontHeight); if (trackHeight > maxHeight) maxHeight = trackHeight; } setGlobalsFromWindow(windows); // first window flatTrack->maxHeight = maxHeight; } +boolean doCollapseEmptySubtracks(struct track *track) +/* Suppress display of empty subtracks. Initial support only for bed's. */ +{ +char *collapseEmptySubtracks = trackDbSetting(track->tdb, "collapseEmptySubtracks"); +return (collapseEmptySubtracks && sameWord(collapseEmptySubtracks, "on")); +} void makeActiveImage(struct track *trackList, char *psOutput) /* Make image and image map. */ { struct track *track; MgFont *font = tl.font; struct hvGfx *hvg; struct tempName pngTn; char *mapName = "map"; int fontHeight = mgFontLineHeight(font); int trackPastTabX = (withLeftLabels ? trackTabWidth : 0); int trackTabX = gfxBorder; int trackPastTabWidth = tl.picWidth - trackPastTabX; int pixWidth, pixHeight; int y=0; @@ -4802,31 +4814,31 @@ safef(buffer, sizeof buffer, "%s_imgOrd", name->name); cartRemove(cart, buffer); } } // Construct flatTracks for (track = trackList; track != NULL; track = track->next) { if (tdbIsComposite(track->tdb)) { struct track *subtrack; if (isCompositeInAggregate(track)) flatTracksAdd(&flatTracks,track,cart, orderedWiggles); else { - boolean doCollapse = trackDbSettingOn(track->tdb, "collapseEmptySubtracks"); + boolean doCollapse = doCollapseEmptySubtracks(track); for (subtrack = track->subtracks; subtrack != NULL; subtrack = subtrack->next) { if (!isSubtrackVisible(subtrack)) continue; if (!isLimitedVisHiddenForAllWindows(subtrack) && !(doCollapse && slCount(subtrack->items) == 0)) { flatTracksAdd(&flatTracks,subtrack,cart, orderedWiggles); } } } } else { @@ -5522,32 +5534,30 @@ } if (trackShouldUseAjaxRetrieval(track)) y += REMOTE_TRACK_HEIGHT; else if (track->drawLeftLabels != NULL) { setGlobalsFromWindow(windows); y = doOwnLeftLabels(track, hvgSide, font, y); setGlobalsFromWindow(windows); // first window } else y += flatTrack->maxHeight; } } - - /* Make map background. */ y = yAfterRuler; for (flatTrack = flatTracks; flatTrack != NULL; flatTrack = flatTrack->next) { track = flatTrack->track; if (track->limitedVis != tvHide) { if (theImgBox) { // Set imgTrack in case any map items will be set sliceHeight = flatTrack->maxHeight; sliceOffsetY = y; curImgTrack = imgBoxTrackFind(theImgBox,track->tdb,NULL); }