bb7c285d51eabd45fe7fbb3ae297acd0324915b7
kent
  Tue Apr 19 15:09:50 2011 -0700
Refactoring in hopes of making auto-scale work as you'd hope with multiwigs.  That still isn't there, this is just preliminaries.
diff --git src/hg/hgTracks/bigWigTrack.c src/hg/hgTracks/bigWigTrack.c
index a5771db..b63b827 100644
--- src/hg/hgTracks/bigWigTrack.c
+++ src/hg/hgTracks/bigWigTrack.c
@@ -11,67 +11,66 @@
 #include "bbiFile.h"
 #include "bigWig.h"
 #include "errCatch.h"
 #include "container.h"
 #include "bigWarn.h"
 
 static void bigWigDrawItems(struct track *tg, int seqStart, int seqEnd,
 	struct hvGfx *hvg, int xOff, int yOff, int width,
 	MgFont *font, Color color, enum trackVisibility vis)
 {
 /* protect against temporary network error */
 struct errCatch *errCatch = errCatchNew();
 if (errCatchStart(errCatch))
     {
     /* Allocate predraw area. */
-    int preDrawZero, preDrawSize;
     struct preDrawContainer *preDrawList = NULL;
 
     /* Get summary info from bigWig */
     int summarySize = width;
     struct bbiSummaryElement *summary;
     AllocArray(summary, summarySize);
 
     struct bbiFile *bbiFile ;
     for(bbiFile = tg->bbiFile; bbiFile ; bbiFile = bbiFile->next)
 	{
-	struct preDrawContainer *preDrawContainer;
-	struct preDrawElement *preDraw = initPreDraw(width, &preDrawSize, &preDrawZero);
-	AllocVar(preDrawContainer);
-	preDrawContainer->preDraw = preDraw;
-	slAddHead(&preDrawList, preDrawContainer);
+	struct preDrawContainer *pre = initPreDrawContainer(width);
+	slAddHead(&preDrawList, pre);
 
 	if (bigWigSummaryArrayExtended(bbiFile, chromName, winStart, winEnd, summarySize, summary))
 	    {
 	    /* Convert format to predraw */
 	    int i;
+	    int preDrawZero = pre->preDrawZero;
+	    struct preDrawElement *preDraw = pre->preDraw;
 	    for (i=0; i<summarySize; ++i)
 		{
 		struct preDrawElement *pe = &preDraw[i + preDrawZero];
 		struct bbiSummaryElement *be = &summary[i];
 		pe->count = be->validCount;
 		pe->min = be->minVal;
 		pe->max = be->maxVal;
 		pe->sumData = be->sumData;
 		pe->sumSquares = be->sumSquares;
 		}
 	    }
 	}
 
     /* Call actual graphing routine. */
     wigDrawPredraw(tg, seqStart, seqEnd, hvg, xOff, yOff, width, font, color, vis,
-		   preDrawList, preDrawZero, preDrawSize, &tg->graphUpperLimit, &tg->graphLowerLimit);
+		   preDrawList, preDrawList->preDrawZero, preDrawList->preDrawSize, 
+		   &tg->graphUpperLimit, &tg->graphLowerLimit);
 
     struct preDrawContainer *nextContain;
     for(; preDrawList ; preDrawList = nextContain)
 	{
 	nextContain = preDrawList->next;
 	freeMem(preDrawList->preDraw);
 	freeMem(preDrawList);
 	}
     freeMem(summary);
     }
 errCatchEnd(errCatch);
 if (errCatch->gotError)
     {
     tg->networkErrMsg = cloneString(errCatch->message->string);
     bigDrawWarning(tg, seqStart, seqEnd, hvg, xOff, yOff, width, font, color, vis);