5cda54b32e44c89a0f49cf6e4e2d72f898d86ad9 braney Sat Mar 11 10:07:37 2023 -0800 for multiWig defined logo wiggle, use the track colors instead of hardcoded values diff --git src/hg/hgTracks/wigTrack.c src/hg/hgTracks/wigTrack.c index ce30adb..367c06f 100644 --- src/hg/hgTracks/wigTrack.c +++ src/hg/hgTracks/wigTrack.c @@ -1333,55 +1333,66 @@ if (numTrack > 0) { y0 = (graphUpperLimit - yOffsets[(numTrack-1) * width + x1]) *scaleFactor; y1 = (graphUpperLimit - dataValue - yOffsets[(numTrack-1) * width + x1])*scaleFactor; } } int boxHeight = max(1,abs(y1 - y0)); int boxTop = min(y1,y0); // positive data value exactly equal to Bottom pixel // make sure it draws at least a pixel there if (boxTop == h) boxTop = h - 1; + unsigned color = MG_BLACK; + char *setting; if (tg->tdb->parent && ((setting = trackDbSetting(tg->tdb->parent,"container")) != NULL) && startsWith("multiWig", setting)) { + /* for multiwig display, use track colors */ + if (dataValue < 0) + color = tg->ixAltColor; + else + color = tg->ixColor; + switch(numTrack) { case 3: if (baseCmpl) base='t'; else base='a';break; case 2: if (baseCmpl) base='g'; else base='c';break; case 1: if (baseCmpl) base='c'; else base='g';break; case 0: if (baseCmpl) base='a'; else base='t';break; } } - char string[2]; - string[0] = toupper(base); - string[1] = 0; - MgFont *font = tl.font; - int height = dataValue * scaleFactor; - unsigned color = MG_BLACK; + else /* hard-coded colors for dynSeq display */ + { if (base == 'a') color = MG_RED; else if (base == 't') color = MG_GREEN; else if (base == 'c') color = MG_BROWN; else if (base == 'g') color = MG_BLUE; + } + + char string[2]; + string[0] = toupper(base); + string[1] = 0; + MgFont *font = tl.font; + int height = dataValue * scaleFactor; if (height != 0) { if (baseProbs) { int thisHeight; // we want a sorted list so the most probable gets drawn on top probVals[0].prob = baseProbs[baseNum].aProb; probVals[1].prob = baseProbs[baseNum].cProb; probVals[2].prob = baseProbs[baseNum].gProb; probVals[3].prob = baseProbs[baseNum].tProb; slSort(&probList,probListCmp); int y = yOff+boxTop; struct probVal *pl = probList;