db44b993ec6123985aaae9aade94f329b0db49ec kate Sun Sep 23 21:03:19 2018 -0700 Add option to merge interactions for a single target, in pack and squish modes. Initial version for demo. refs #21917 diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c index 73de7e0..69f26ae 100644 --- src/hg/hgTracks/simpleTracks.c +++ src/hg/hgTracks/simpleTracks.c @@ -1604,30 +1604,49 @@ else if (sameString(type, "green")) colorIx = MG_GREEN; else if (sameString(type, "blue")) colorIx = MG_BLUE; return colorIx; } struct track *trackNew() /* Allocate track . */ { struct track *tg; AllocVar(tg); return tg; } +int simpleFeatureCmp(const void *va, const void *vb) +/* Compare to sort based on start. */ +{ +const struct simpleFeature *a = *((struct simpleFeature **)va); +const struct simpleFeature *b = *((struct simpleFeature **)vb); +return a->start - b->start; +} + +void linkedFeaturesSortAndBound(struct linkedFeatures *lf) +/* Sort simpleFeatures in the linkedFeature and set start and end based on simpleFetaures */ +{ +struct simpleFeature *sfLast, *sfs = lf->components; +slSort(&sfs, simpleFeatureCmp); +lf->components = sfs; +sfLast = (struct simpleFeature *)slLastEl(sfs); +lf->start = sfs->start; +lf->end = sfLast->end; +} + int linkedFeaturesCmp(const void *va, const void *vb) /* Compare to sort based on start. */ { const struct linkedFeatures *a = *((struct linkedFeatures **)va); const struct linkedFeatures *b = *((struct linkedFeatures **)vb); return a->start - b->start; } char *linkedFeaturesName(struct track *tg, void *item) /* Return name of item. */ { struct linkedFeatures *lf = item; return lf->name; }