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)*/