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