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/bamTrack.c src/hg/hgTracks/bamTrack.c index 14b1560..35ececa 100644 --- src/hg/hgTracks/bamTrack.c +++ src/hg/hgTracks/bamTrack.c @@ -875,65 +875,63 @@ case 'P': // P="silent deletion from padded reference sequence" -- ignore these. break; default: errAbort("countBam: unrecognized CIGAR op %c -- update me", op); } } return 0; } static void bamWigDrawItems(struct track *tg, int seqStart, int seqEnd, struct hvGfx *hvg, int xOff, int yOff, int width, MgFont *font, Color color, enum trackVisibility vis) { /* Allocate predraw area. */ -int preDrawZero, preDrawSize; -struct preDrawContainer *preDrawList = NULL; struct bamWigTrackData *bwData; double scale = (double)width/(winEnd - winStart); +struct preDrawContainer *pre = initPreDrawContainer(width); AllocVar(bwData); -bwData->preDraw = initPreDraw(width, &preDrawSize, &preDrawZero); +bwData->preDraw = pre->preDraw; bwData->scale = scale; bwData->width = width; -bwData->preDrawZero = preDrawZero; +bwData->preDrawZero = pre->preDrawZero; char posForBam[512]; safef(posForBam, sizeof(posForBam), "%s:%d-%d", chromName, winStart, winEnd); char *fileName = tg->customPt; tg->customPt = NULL; bamFetch(fileName, posForBam, countBam, bwData, NULL); /* fill in rest of predraw */ +int preDrawZero = pre->preDrawZero; int i; for (i=0; ipreDraw[i + preDrawZero]; pe->min = pe->count; pe->max = pe->count; pe->sumData = pe->count / scale; pe->sumSquares = (pe->count * pe->count)/scale; } -AllocVar(preDrawList); -preDrawList->preDraw = bwData->preDraw; /* Call actual graphing routine. */ wigDrawPredraw(tg, seqStart, seqEnd, hvg, xOff, yOff, width, font, color, vis, - preDrawList, preDrawZero, preDrawSize, &tg->graphUpperLimit, &tg->graphLowerLimit); + pre, pre->preDrawZero, pre->preDrawSize, &tg->graphUpperLimit, &tg->graphLowerLimit); } void bamWigMethods(struct track *track, struct trackDb *tdb, int wordCount, char *words[]) /* Set up bamWig methods. */ { bedGraphMethods(track, tdb, wordCount, words); track->loadItems = bamWigLoadItems; track->drawItems = bamWigDrawItems; } #else /* no USE_BAM */ #include "common.h" #include "hgTracks.h"