3bd303d90463041294d0879f7a3ef64c6f8dcaf4 braney Sun May 7 17:44:39 2017 -0700 ongoing work on custom composites diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index bbb1d8b..24a2c1d 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -443,41 +443,73 @@ startsWithWord("bam",track->tdb->type) || startsWithWord("vcfTabix", track->tdb->type)) { SET_TO_YES(track->remoteDataSource); } } return IS_YES(track->remoteDataSource); } boolean trackShouldUseAjaxRetrieval(struct track *track) /* Tracks with remote data sources should berendered via an ajax callback */ { return (theImgBox && !trackImgOnly && trackUsesRemoteData(track)); } #endif///def REMOTE_TRACK_AJAX_CALLBACK +static boolean isCompositeInAggregate(struct track *track) +// Check to see if this is a custom composite in aggregate mode. +{ +if (!isCustomComposite(track->tdb)) + return FALSE; + +char *aggregateVal = cartOrTdbString(cart, track->tdb, "aggregate", NULL); +if ((aggregateVal == NULL) || sameString(aggregateVal, "none")) + return FALSE; + +struct track *subtrack = NULL; +for (subtrack = track->subtracks; subtrack != NULL; subtrack = subtrack->next) + { + if (isSubtrackVisible(subtrack)) + break; + } +if (subtrack == NULL) + return FALSE; + +multiWigContainerMethods(track); +//struct wigCartOptions *wigCart = wigCartOptionsNew(cart, track->tdb, 0, NULL); +//track->wigCartData = (void *) wigCart; +//track->lineHeight = wigCart->defaultHeight; +//wigCart->isMultiWig = TRUE; +//wigCart->autoScale = wiggleScaleAuto; +//wigCart->defaultHeight = track->lineHeight; +//struct wigGraphOutput *wgo = setUpWgo(xOff, yOff, width, tg->height, numTracks, wigCart, hvg); +//tg->wigGraphOutput = wgo; + +return TRUE; +} + static int trackPlusLabelHeight(struct track *track, int fontHeight) /* Return the sum of heights of items in this track (or subtrack as it may be) * and the center label(s) above the items (if any). */ { if (trackShouldUseAjaxRetrieval(track)) return REMOTE_TRACK_HEIGHT; int y = track->totalHeight(track, limitVisibility(track)); if (isCenterLabelIncluded(track)) y += fontHeight; -if (tdbIsComposite(track->tdb)) +if (tdbIsComposite(track->tdb) && !isCompositeInAggregate(track)) { struct track *subtrack; for (subtrack = track->subtracks; subtrack != NULL; subtrack = subtrack->next) { if (isSubtrackVisible(subtrack) && isCenterLabelIncluded(subtrack)) y += fontHeight; } } return y; } void drawColoredButtonBox(struct hvGfx *hvg, int x, int y, int w, int h, int enabled, Color shades[]) /* draw button box, providing shades of the desired button color */ { @@ -4526,61 +4558,30 @@ 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; } -static boolean isCompositeInAggregate(struct track *track) -// Check to see if this is a custom composite in aggregate mode. -{ -if (!isCustomComposite(track->tdb)) - return FALSE; - -char *aggregateVal = cartOrTdbString(cart, track->tdb, "aggregate", NULL); -if ((aggregateVal == NULL) || sameString(aggregateVal, "none")) - return FALSE; - -struct track *subtrack = NULL; -for (subtrack = track->subtracks; subtrack != NULL; subtrack = subtrack->next) - { - if (isSubtrackVisible(subtrack)) - break; - } -if (subtrack == NULL) - return FALSE; - -multiWigContainerMethods(track); -//struct wigCartOptions *wigCart = wigCartOptionsNew(cart, track->tdb, 0, NULL); -//track->wigCartData = (void *) wigCart; -//track->lineHeight = wigCart->defaultHeight; -//wigCart->isMultiWig = TRUE; -//wigCart->autoScale = wiggleScaleAuto; -//wigCart->defaultHeight = track->lineHeight; -//struct wigGraphOutput *wgo = setUpWgo(xOff, yOff, width, tg->height, numTracks, wigCart, hvg); -//tg->wigGraphOutput = wgo; - -return TRUE; -} 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;