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;