a94b20dd5562fcdc56e25819443447699cba3361 kate Sun Nov 15 11:43:53 2015 -0800 Initial code for variable height layout of GTEx gene track diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c index 1179cad..8e8d0e1 100644 --- src/hg/hgTracks/simpleTracks.c +++ src/hg/hgTracks/simpleTracks.c @@ -3592,30 +3592,52 @@ { if (sn->row >= overflowRow) { genericDrawOverflowItem(tg, sn, hvg, xOff, yOff, width, font, color, scale, overflowRow, firstOverflow); firstOverflow = FALSE; } else genericDrawItem(tg, sn, hvg, xOff, yOff, width, font, color, color, vis, scale, withLeftLabels); } hvGfxUnclip(hvg); } +void genericDrawNextItem(struct track *tg, void *item, struct hvGfx *hvg, int xOff, int y, + double scale, Color color, enum trackVisibility vis) +/* Draw next item buttons and map boxes */ +//TODO: Use this to clean up genericDrawItemsFullDense (will require wading thru ifdefs) +{ +boolean isNextItemCompatible = nextItemCompatible(tg); +boolean isExonNumberMapsCompatible = exonNumberMapsCompatible(tg, vis); +if (!isNextItemCompatible && !isExonNumberMapsCompatible) + return; +boolean doButtons = (isExonNumberMapsCompatible ? FALSE: TRUE); + +// Convert start/end coordinates to pix +int s = tg->itemStart(tg, item); +int e = tg->itemEnd(tg, item); +int sClp = (s < winStart) ? winStart : s; +int eClp = (e > winEnd) ? winEnd : e; +int x1 = round((sClp - winStart)*scale) + xOff; +int x2 = round((eClp - winStart)*scale) + xOff; +genericDrawNextItemStuff(tg, hvg, vis, item, scale, x2, x1, -1, y, tg->heightPer, color, + doButtons); +} + static void genericDrawItemsFullDense(struct track *tg, int seqStart, int seqEnd, struct hvGfx *hvg, int xOff, int yOff, int width, MgFont *font, Color color, enum trackVisibility vis) /* genericDrawItems logic for full and dense modes */ { double scale = scaleForWindow(width, seqStart, seqEnd); struct slList *item; int y = yOff; for (item = tg->items; item != NULL; item = item->next) { if (tg->itemColor != NULL) color = tg->itemColor(tg, item, hvg); tg->drawItemAt(tg, item, hvg, xOff, y, scale, font, color, vis); if (vis == tvFull) {