51dfe6b3d4acfb1caafbee15bfdba3ea1f18fd43
braney
  Mon Jun 30 15:55:01 2025 -0700
ongoing work on liftOver

diff --git src/hg/hgTracks/chainTrack.c src/hg/hgTracks/chainTrack.c
index b22fff22c07..efeee84c0ca 100644
--- src/hg/hgTracks/chainTrack.c
+++ src/hg/hgTracks/chainTrack.c
@@ -330,30 +330,31 @@
                 {
                 int temp;
 
                 temp = sf->qStart;
                 sf->qStart = lf->qSize - sf->qEnd;
                 sf->qEnd = lf->qSize - temp;
                 }
 	    }
         }
 if (tg->isBigBed)
     bbiFileClose(&bbClosure.bbi);
 else
     hFreeConn(&sqlClosure.conn);
 }
 
+#ifdef NOTFORNOW
 static void denseChainReverse(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 dense chain in a mode that only shows the gaps. */
 {
 hvGfxSetClip(hvgSide, insideX, yOff, insideWidth, tg->height);
 struct slList *item;
 int y = yOff;
 double scale = scaleForWindow(width, seqStart, seqEnd);
 int heightPer = tg->heightPer;
 color = hvGfxFindRgb(hvg, &undefinedYellowColor);
 for (item = tg->items; item != NULL; item = item->next)
     {
     struct linkedFeatures *lf = (struct linkedFeatures *)item;
     struct simpleFeature *sf = lf->components;
@@ -378,45 +379,46 @@
     mapBoxHgcOrHgGene(hvg, winStart, winEnd, xOff, yOff, insideWidth, heightPer, tg->track,
                   lf->extra, "Go to hg38", NULL, TRUE, NULL);
     struct simpleFeature *prev = NULL;
     for (; sf; sf = sf->next)
         {
         unsigned s = sf->start;
         if (prev)
             {
             if (prev->qEnd != sf->qStart)
                 drawScaledBox(hvg, s, s,  scale, xOff, y, heightPer, color);
             }
         prev = sf;
         }
     }
 }
+#endif
 
 void chainDraw(struct track *tg, int seqStart, int seqEnd,
         struct hvGfx *hvg, int xOff, int yOff, int width,
         MgFont *font, Color color, enum trackVisibility vis)
 /* Draw chained features. This loads up the simple features from
  * the chainLink table, calls linkedFeaturesDraw, and then
  * frees the simple features again. */
 {
 
 if (tg->items == NULL)		/*Exit Early if nothing to do */
     return;
 
 char *chainType = trackDbSetting(tg->tdb, "chainType");
 if ((chainType != NULL) && (vis == tvDense) )
-    denseChainReverse(tg, seqStart, seqEnd, hvg, xOff, yOff, width,
+    maybeDrawQuickLiftLines( tg, seqStart, seqEnd, hvg, xOff, yOff, width,
                       font, color, vis);
 else
     linkedFeaturesDraw(tg, seqStart, seqEnd, hvg, xOff, yOff, width,
 	font, color, vis);
 }
 
 void bigChainLoadItems(struct track *tg)
 /* Load up all of the chains from correct table into tg->items
  * item list.  At this stage to conserve memory for other tracks
  * we don't load the links into the components list until draw time. */
 {
 boolean doSnake = cartOrTdbBoolean(cart, tg->tdb, "doSnake" , FALSE);
 struct linkedFeatures *list = NULL, *lf;
 int qs;
 char *optionChrStr;