9796c4d65f1f1fcd8eae91e158b68bbf8ee8698f kate Wed Apr 29 12:01:38 2020 -0700 Add map box on entire gene graph for click to hgc. refs #25465 diff --git src/hg/hgTracks/gtexTracks.c src/hg/hgTracks/gtexTracks.c index 0162d2b..dfb2bc5 100644 --- src/hg/hgTracks/gtexTracks.c +++ src/hg/hgTracks/gtexTracks.c @@ -954,31 +954,32 @@ return geneBed->chromStart; } static int gtexGeneItemEnd(struct track *tg, void *item) /* Return end chromosome coordinate of item, including graph */ { struct gtexGeneInfo *geneInfo = (struct gtexGeneInfo *)item; struct gtexGeneBed *geneBed = geneInfo->geneBed; double scale = scaleForWindow(insideWidth, winStart, winEnd); int graphWidth = gtexGraphWidth(tg, geneInfo); return max(geneBed->chromEnd, max(winStart, geneBed->chromStart) + graphWidth/scale); } static void gtexGeneMapItem(struct track *tg, struct hvGfx *hvg, void *item, char *itemName, char *mapItemName, int start, int end, int x, int y, int width, int height) -/* Create a map box on gene model and label, and one for each tissue (bar in the graph) in +/* Create a map box on gene graph, gene model and label, + * and one for each tissue (bar in the graph) in * pack or full mode. Just single map for squish/dense modes */ { if (tg->limitedVis == tvDense) { genericMapItem(tg, hvg, item, itemName, itemName, start, end, x, y, width, height); return; } struct gtexGeneInfo *geneInfo = item; struct gtexGeneBed *geneBed = geneInfo->geneBed; struct gtexGeneExtras *extras = (struct gtexGeneExtras *)tg->extraUiData; int geneStart = geneBed->chromStart; int geneEnd = geneBed->chromEnd; if (tg->limitedVis == tvSquish) { int tisId = maxTissueForGene(geneBed); @@ -1061,30 +1062,36 @@ int x1, x2; getItemX(itemStart, itemEnd, &x1, &x2); int w = x2-x1; int labelWidth = mgFontStringWidth(tl.font, itemName); if (x1-labelWidth <= insideX) labelWidth = 0; // map over label int itemHeight = geneInfo->height; mapBoxHc(hvg, geneStart, geneEnd, x1-labelWidth, y, labelWidth, itemHeight-3, tg->track, mapItemName, geneInfo->description); // map over gene model (extending to end of item) int geneModelHeight = gtexGeneModelHeight(extras); mapBoxHc(hvg, geneStart, geneEnd, x1, y+itemHeight-geneModelHeight-3, w, geneModelHeight, tg->track, mapItemName, geneInfo->description); } + +// add map box to expression graph +x1 = insideX + graphX; // x1 is at left of graph +height = topGraphHeight; +width = gtexGraphWidth(tg, geneInfo); +mapBoxHc(hvg, geneStart, geneEnd, x1, y, width, height, tg->track, mapItemName, itemName); } static char *gtexGeneItemName(struct track *tg, void *item) /* Return gene name */ { struct gtexGeneInfo *geneInfo = (struct gtexGeneInfo *)item; return geneInfo->label; } static int gtexGeneHeight(void *item) { struct gtexGeneInfo *geneInfo = (struct gtexGeneInfo *)item; assert(geneInfo->height != 0); return geneInfo->height; }