5f6b07f6ef00d7a59ca4e454d7336205eede6055 kate Wed Aug 28 16:03:23 2019 -0700 Add ifdef to force interaction display to linked features mode (no curves) when in multi-region view. Awaiting JK input. refs #22422 diff --git src/hg/hgTracks/interactTrack.c src/hg/hgTracks/interactTrack.c index c41110f..0a16f83 100644 --- src/hg/hgTracks/interactTrack.c +++ src/hg/hgTracks/interactTrack.c @@ -357,31 +357,36 @@ } void interactLoadItems(struct track *tg) /* Load interact items in interact format */ { loadAndFilterItems(tg); struct interactTrackInfo *tInfo = NULL; AllocVar(tInfo); tg->customPt = tInfo; tInfo->isDirectional = interactUiDirectional(tg->tdb); tInfo->offset = interactUiOffset(tg->tdb); tInfo->drawUp = trackDbSettingClosestToHomeOn(tg->tdb, INTERACT_UP); tInfo->clusterMode = interactUiClusterMode(cart, tg->track, tg->tdb); +#define MR_FORCE_PACK 1 +#ifdef MR_FORCE_PACK + if (!tInfo->clusterMode && !isLinkedFeaturesMode(tg) && sameString(virtModeType, "default")) +#else if (!tInfo->clusterMode && !isLinkedFeaturesMode(tg)) +#endif { // draw curve display tg->mapsSelf = TRUE; tg->totalHeight = interactTotalHeight; tg->drawLeftLabels = interactNoLeftLabels; tg->freeItems = interactFreeItems; return; } // convert to BEDs for linked feature display struct interact *inters = tg->items, *inter; struct linkedFeatures *lfs = NULL, *lf; struct hash *intersCluster = hashNew(0); boolean doColor = !tg->colorShades; if (!tInfo->clusterMode) @@ -615,31 +620,30 @@ { char *otherChrom = interactOtherChrom(inter); safef(itemBuf, sizeof itemBuf, "%s", inter->name); char *statusBuf = interactMouseover(inter, otherChrom); // Pick colors #define MG_LIGHT_MAGENTA 0xffffbbff #define MG_LIGHT_GRAY 0xff909090 color = interactItemColor(tg, inter, hvg, scoreMin, scoreMax); if (vis == tvDense && otherChrom && color == MG_BLACK) // use highlight color for other chrom items in dense mode color = MG_LIGHT_MAGENTA; int peakColor = (color == MG_BLACK || tg->colorShades) ? MG_LIGHT_MAGENTA : MG_LIGHT_GRAY; - if (otherChrom) { // different chromosomes // draw below same chrom items, if any int height = 0; int yOffOther = yOff; if (vis == tvDense) { height = tg->height; } else { height = tInfo->otherHeight/2; yOffOther = yOff + tInfo->sameHeight; } @@ -878,31 +882,35 @@ int x = x2 + tl.mWidth/2; struct interactLfEndNames *ends = getInteractLfEndNames(lf); char *rightLabel = (lf->orientation < 0 ? ends->source : ends->target); int w = mgFontStringWidth(font, rightLabel); hvGfxTextCentered(hvg, x, y, w, tg->heightPer, color, font, rightLabel); } } } void interactDrawItems(struct track *tg, int seqStart, int seqEnd, struct hvGfx *hvg, int xOff, int yOff, int width, MgFont *font, Color color, enum trackVisibility vis) /* Draw a list of interact structures. */ { struct interactTrackInfo *tInfo = (struct interactTrackInfo *)tg->customPt; +#ifdef MR_FORCE_PACK +if (tInfo->clusterMode || isLinkedFeaturesMode(tg) || differentString(virtModeType, "default")) +#else if (tInfo->clusterMode || isLinkedFeaturesMode(tg)) +#endif { tg->drawItemAt = interactLinkedFeaturesDrawAt; linkedFeaturesDraw(tg, seqStart, seqEnd, hvg, xOff, yOff, width, font, color, vis); } else // curve, etc. connector display drawInteractItems(tg, seqStart, seqEnd, hvg, xOff, yOff, width, font, color, vis); } void interactMethods(struct track *tg) /* Interact track type methods */ { tg->bedSize = 12; linkedFeaturesMethods(tg); // for most vis and mode settings tg->loadItems = interactLoadItems;