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;