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);