8c908f948b09826c6cb4452ee5b282aca41be85e galt Tue Dec 8 21:52:59 2015 -0800 Multi-region (exonMostly). This work allows people to look at virtual chromosomes from a list of regions and then navigate and perform all of the usual functions on it. diff --git src/hg/hgTracks/cytoBandTrack.c src/hg/hgTracks/cytoBandTrack.c index a0040f6..0ec2154 100644 --- src/hg/hgTracks/cytoBandTrack.c +++ src/hg/hgTracks/cytoBandTrack.c @@ -158,36 +158,48 @@ int cenLeft, cenRight, cenTop, cenBottom; /* Get the coordinates of the edges of the centromere. */ cenLeft = round((cb->chromStart)*scale) + xOff + xBorder; cenRight = round((cb->next->chromEnd)*scale) + xOff + xBorder; cenTop = yOff+4; cenBottom = yOff + yBorder - 3; /* Draw centromere itself. */ hCytoBandDrawCentromere(hvg, cenLeft, cenTop, cenRight - cenLeft, cenBottom-cenTop+1, MG_WHITE, hCytoBandCentromereColor(hvg)); break; } } -/* Draw a red box around position in current browser window. double - thick so two lines each. */ +/* Draw a red box around all positions in windows for this chromName. + * Double thick so two pixels thick each. */ +struct window *window; +for (window=windows; window; window=window->next) + { + if (!sameString(chromName, window->chromName)) + continue; + + x1 = round((window->winStart)*scale) + xOff + xBorder -1; + x2 = round((window->winEnd)*scale) + xOff + xBorder -1; + hvGfxBox(hvg, x1, yOff+1, x2-x1, 2, MG_RED); hvGfxBox(hvg, x1, yOff + yBorder - 1, x2-x1, 2, MG_RED); hvGfxBox(hvg, x1, yOff+1, 2, yBorder, MG_RED); hvGfxBox(hvg, x2, yOff+1, 2, yBorder, MG_RED); + + } + hvGfxUnclip(hvg); /* Put back the lineHeight for the track now that we are done spoofing tgDrawItems(). */ tg->heightPer += 11; tg->lineHeight += 11; } void cytoBandIdeoMapItem(struct track *tg, struct hvGfx *hvg, void *item, char *itemName, char *mapItemName, int start, int end, int x, int y, int width, int height) /* Print out a box to jump to band in browser window .*/ { struct cytoBand *cb = item;