b08ff242ae8a54ac2ba52b668dacb0515b695648 braney Mon Apr 14 10:22:56 2014 -0700 little tweak to deal with offscreen blocks diff --git src/hg/hgTracks/snakeTrack.c src/hg/hgTracks/snakeTrack.c index c42e61a..58844c3 100644 --- src/hg/hgTracks/snakeTrack.c +++ src/hg/hgTracks/snakeTrack.c @@ -240,34 +240,41 @@ for(ii=0; ii <= maxLevel; ii++) { Levels[ii].connectsToLevel = needMem((maxLevel+1) * sizeof(unsigned)); Levels[ii].pixels = bitAlloc(insideWidth); Levels[ii].blocks = NULL; } struct snakeFeature *sf, *prev = NULL, *next; int prevLevel = -1; double scale = scaleForWindow(insideWidth, winStart, winEnd); for(sf=sfList; sf; prev = sf, sf = next) { next = sf->next; + if (positiveRangeIntersection(sf->start, sf->end, winStart, winEnd)) + { int sClp = (sf->start < winStart) ? winStart : sf->start; sf->pixX1 = round((sClp - winStart)*scale); int eClp = (sf->end > winEnd) ? winEnd : sf->end; sf->pixX2 = round((eClp - winStart)*scale); + } + else + { + sf->pixX1 = sf->pixX2 = 0; + } bitSetRange(Levels[sf->level].pixels, sf->pixX1, sf->pixX2 - sf->pixX1); if (prevLevel != -1) Levels[sf->level].connectsToLevel[prevLevel] = 1; if(next != NULL) Levels[sf->level].connectsToLevel[next->level] = 1; prevLevel = sf->level; slAddHead(&Levels[sf->level].blocks, sf); } }