8a75f8b98316f72a4539944c73e840126411a426 kate Thu Sep 13 12:49:04 2018 -0700 Initial work for pack mode display of interactions as linked features. Doesn't recognize pack mode, and doesn't display as linked features (just as bed3). refs #21917 diff --git src/hg/hgTracks/interactTrack.c src/hg/hgTracks/interactTrack.c index ce8ee7a..f0ce9e1 100644 --- src/hg/hgTracks/interactTrack.c +++ src/hg/hgTracks/interactTrack.c @@ -99,30 +99,45 @@ { if (!(sOnScreen || tOnScreen)) continue; } } slAddHead(&filteredItems, inter); } slReverse(&filteredItems); // consider sorting by score/value so highest scored items draw last (on top) if (slCount(filteredItems) != count) labelTrackAsFiltered(tg); tg->items = filteredItems; } +void interactLoadBedItems(struct track *tg) +/* Load interact items as linked features */ +{ +interactLoadItems(tg); +struct interact *inters = tg->items, *inter; +struct bed *beds = NULL, *bed; +for (inter = inters; inter; inter = inter->next) + { + bed = interactToBed(inter); + slAddHead(&beds, bed); + } +slReverse(&beds); +tg->items = beds; +} + char *interactMouseover(struct interact *inter, char *otherChrom) /* Make mouseover text for an interaction */ { struct dyString *ds = dyStringNew(0); if (isEmptyTextField(inter->name)) { if (!isEmptyTextField(inter->exp)) dyStringPrintf(ds, "%s ", inter->exp); if (otherChrom) dyStringPrintf(ds, "%s", otherChrom); else { char buf[4096]; sprintLongWithCommas(buf, inter->chromEnd - inter->chromStart); dyStringPrintf(ds, "%s bp", buf); @@ -582,28 +597,38 @@ } } } void interactDrawLeftLabels(struct track *tg, int seqStart, int seqEnd, struct hvGfx *hvg, int xOff, int yOff, int width, int height, boolean withCenterLabels, MgFont *font, Color color, enum trackVisibility vis) /* Override default */ { } void interactMethods(struct track *tg) /* Interact track type methods */ { +tg->canPack = TRUE; +if (tg->visibility == tvPack) +//if (1) + { + bedMethods(tg); + tg->loadItems = interactLoadBedItems; + } +else + { tg->loadItems = interactLoadItems; tg->drawItems = interactDrawItems; tg->drawLeftLabels = interactDrawLeftLabels; tg->totalHeight = interactTotalHeight; tg->mapsSelf = TRUE; } +} void interactCtMethods(struct track *tg) /* Interact track methods for custom track */ { interactMethods(tg); }