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) { /* 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); if (bigWigSummaryArrayExtended(bbiFile, chromName, winStart, winEnd, summarySize, summary)) { /* Convert format to predraw */ int i; 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. */ // maybe putting something about the upper/lower limit here // also the transformFunc is not there, maybe not completely functional? wigDrawPredraw(tg, seqStart, seqEnd, hvg, xOff, yOff, width, font, color, vis, preDrawList, preDrawZero, preDrawSize, &tg->graphUpperLimit, &tg->graphLowerLimit); struct preDrawContainer *nextContain; for(; preDrawList ; preDrawList = nextContain) { nextContain = preDrawList->next; freeMem(preDrawList->preDraw); freeMem(preDrawList); } freeMem(summary); }
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) { /* Call actual graphing routine. */ wigDrawPredraw(tg, seqStart, seqEnd, hvg, xOff, yOff, width, font, color, vis, tg->preDrawContainer, tg->preDrawContainer->preDrawZero, tg->preDrawContainer->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 = bedGraphLoadPreDraw(tg, seqStart, seqEnd, width); if (pre != NULL) { wigDrawPredraw(tg, seqStart, seqEnd, hvg, xOff, yOff, width, font, color, vis, pre, pre->preDrawZero, pre->preDrawSize, &tg->graphUpperLimit, &tg->graphLowerLimit); } }