9944d8c4a72a426a07ed2d33a5ea535811dd4461
galt
  Sun Feb 7 23:26:52 2016 -0800
Issue 16666. Makes autoscale work with multi-region for wig, bedGraph, bigWig, and multiWig. doWiggle still TODO.

diff --git src/hg/hgTracks/bedGraph.c src/hg/hgTracks/bedGraph.c
index 4d80383..d53a51b 100644
--- src/hg/hgTracks/bedGraph.c
+++ src/hg/hgTracks/bedGraph.c
@@ -205,43 +205,56 @@
 	if ((xCoord >= 0) && (xCoord < preDrawSize))
 	    {
 	    ++preDraw[xCoord].count;
 	    if (dataValue > preDraw[xCoord].max)
 		preDraw[xCoord].max = dataValue;
 	    if (dataValue < preDraw[xCoord].min)
 		preDraw[xCoord].min = dataValue;
 	    preDraw[xCoord].sumData += dataValue;
 	    preDraw[xCoord].sumSquares += dataValue * dataValue;
 	    }
 	}
     }	/*	for (wi = tg->items; wi != NULL; wi = wi->next)	*/
 return pre;
 }
 
-static void bedGraphDrawItems(struct track *tg, int seqStart, int seqEnd,
+static void bedGraphPreDrawItems(struct track *tg, int seqStart, int seqEnd,
 	struct hvGfx *hvg, int xOff, int yOff, int width,
 	MgFont *font, Color color, enum trackVisibility vis)
 {
 struct preDrawContainer *pre = bedGraphLoadPreDraw(tg, seqStart, seqEnd, width);
 if (pre != NULL)
     {
-    wigDrawPredraw(tg, seqStart, seqEnd, hvg, xOff, yOff, width, font, color, vis,
+    wigPreDrawPredraw(tg, seqStart, seqEnd, hvg, xOff, yOff, width, font, color, vis,
 		   pre, pre->preDrawZero, pre->preDrawSize, 
 		   &tg->graphUpperLimit, &tg->graphLowerLimit);
     }
 }
 
+static void bedGraphDrawItems(struct track *tg, int seqStart, int seqEnd,
+	struct hvGfx *hvg, int xOff, int yOff, int width,
+	MgFont *font, Color color, enum trackVisibility vis)
+{
+struct preDrawContainer *pre = tg->preDrawContainer;
+if (pre != NULL)
+    {
+    wigDrawPredraw(tg, seqStart, seqEnd, hvg, xOff, yOff, width, font, color, vis,
+		   pre, pre->preDrawZero, pre->preDrawSize, 
+		   tg->graphUpperLimit, tg->graphLowerLimit);
+    }
+}
+
 /*
  *	WARNING ! - track->visibility is merely the default value
  *	from the trackDb entry at this time.  It will be set after this
  *	 by hgTracks from its cart UI setting.  When called in
  *	 TotalHeight it will then be the requested visibility.
  */
 void bedGraphMethods(struct track *track, struct trackDb *tdb, 
 	int wordCount, char *words[])
 {
 struct wigCartOptions *wigCart = wigCartOptionsNew(cart, tdb, wordCount, words);
 wigCart->bedGraph = TRUE;	/*	signal to left labels	*/
 switch (wordCount)
     {
     case 2:
 	wigCart->graphColumn = atoi(words[1]);
@@ -251,30 +264,32 @@
 	    wigCart->graphColumn = 5; /* default score column */
 
 	break;
     default:
 	wigCart->graphColumn = 5; /* default score column */
 	break;
     } 
 
 track->minRange = wigCart->minY;
 track->maxRange = wigCart->maxY;
 track->graphUpperLimit = wigEncodeStartingUpperLimit;
 track->graphLowerLimit = wigEncodeStartingLowerLimit;
 
 track->loadItems = bedGraphLoadItems;
 track->freeItems = bedGraphFreeItems;
+track->preDrawItems = bedGraphPreDrawItems;
+track->preDrawMultiRegion = wigMultiRegionGraphLimits;
 track->drawItems = bedGraphDrawItems;
 track->itemName = bedGraphName;
 track->mapItemName = bedGraphName;
 track->totalHeight = wigTotalHeight;
 track->itemHeight = tgFixedItemHeight;
 
 track->itemStart = tgItemNoStart;
 track->itemEnd = tgItemNoEnd;
 track->mapsSelf = TRUE;
 track->wigCartData = (void *) wigCart;
 track->colorShades = shadesOfGray;
 track->drawLeftLabels = wigLeftLabels;
 track->loadPreDraw = bedGraphLoadPreDraw;
 /*	the lfSubSample type makes the image map function correctly */
 track->subType = lfSubSample;     /*make subType be "sample" (=2)*/