87165caa138700c2f604737f7448685797bf1954
angie
  Wed Dec 18 14:20:37 2019 -0800
Apply same base and indel coloring defaults to BAM tracks in hgTrackUi as in hgTracks.  refs #24674

diff --git src/hg/hgTracks/bamTrack.c src/hg/hgTracks/bamTrack.c
index f05de2c..251e284 100644
--- src/hg/hgTracks/bamTrack.c
+++ src/hg/hgTracks/bamTrack.c
@@ -1,27 +1,28 @@
 /* bamTrack -- handlers for alignments in BAM format (produced by MAQ,
  * BWA and some other short-read alignment tools). */
 
 /* Copyright (C) 2014 The Regents of the University of California 
  * See README in this or parent directory for licensing information. */
 
 
 #include "common.h"
 #include "hCommon.h"
 #include "hash.h"
 #include "linefile.h"
 #include "htmshell.h"
+#include "hui.h"
 #include "jksql.h"
 #include "hdb.h"
 #include "hgTracks.h"
 #include "cds.h"
 #include "hgBam.h"
 #include "wigCommon.h"
 #include "knetUdc.h"
 #include "udc.h"
 #include "bigWarn.h"
 #include "errCatch.h"
 #include "hgConfig.h"
 
 
 struct bamTrackData
     {
@@ -770,53 +771,30 @@
 }
 
 void bamLinkedFeaturesDraw(struct track *tg, int seqStart, int seqEnd,
         struct hvGfx *hvg, int xOff, int yOff, int width,
         MgFont *font, Color color, enum trackVisibility vis)
 /* Draw linked features items. */
 {
 linkedFeaturesDraw(tg, seqStart, seqEnd, hvg, xOff, yOff, width,
         font, color, vis);
 
 if(tg->customInt)
     doMapBoxPerRow(tg, seqStart, seqEnd, hvg, xOff, yOff, width,
             font, color, vis);
 }
 
-#define BAM_DEFAULT_SHOW_DIFF_BASES_MAX_ZOOM "100"
-
-static void addBamBaseAndIndelSettings(struct trackDb *tdb)
-/* Unless already set in trackDb, add settings to enable
- * base-level differences and indel display. */
-{
-struct hash *settings = tdb->settingsHash;
-if (!hashLookup(settings, BASE_COLOR_USE_SEQUENCE))
-    hashAdd(settings, BASE_COLOR_USE_SEQUENCE, cloneString("lfExtra"));
-if (!hashLookup(settings, BASE_COLOR_DEFAULT))
-    hashAdd(settings, BASE_COLOR_DEFAULT, cloneString(BASE_COLOR_DRAW_DIFF_BASES));
-if (!hashLookup(settings, SHOW_DIFF_BASES_ALL_SCALES))
-    hashAdd(settings, SHOW_DIFF_BASES_ALL_SCALES, cloneString("."));
-if (!hashLookup(settings, INDEL_DOUBLE_INSERT))
-    hashAdd(settings, INDEL_DOUBLE_INSERT, cloneString("on"));
-if (!hashLookup(settings, INDEL_QUERY_INSERT))
-    hashAdd(settings, INDEL_QUERY_INSERT, cloneString("on"));
-if (!hashLookup(settings, INDEL_POLY_A))
-    hashAdd(settings, INDEL_POLY_A, cloneString("on"));
-if (!hashLookup(settings, "showDiffBasesMaxZoom"))
-    hashAdd(settings, "showDiffBasesMaxZoom", cloneString(BAM_DEFAULT_SHOW_DIFF_BASES_MAX_ZOOM));
-}
-
 void bamMethods(struct track *track)
 /* Methods for BAM alignment files. */
 {
 knetUdcInstall();
 
 boolean isBamWig = cartUsualBooleanClosestToHome(cart, track->tdb, FALSE,
 			 BAMWIG_MODE, (trackDbSettingClosestToHome(track->tdb, BAMWIG_MODE) != NULL)); 
 if (isBamWig)
     {
     bamWigMethods(track, track->tdb, 0, NULL);
     return;
     }
 
 track->canPack = TRUE;
 boolean isPaired = cartUsualBooleanClosestToHome(cart, track->tdb, FALSE,
@@ -824,31 +802,31 @@
 			 (trackDbSettingClosestToHome(track->tdb, BAM_PAIR_ENDS_BY_NAME) != NULL));
 char *tdbShowNames = trackDbSetting(track->tdb, BAM_SHOW_NAMES);
 boolean showNames = cartUsualBooleanClosestToHome(cart, track->tdb, FALSE,
 						  BAM_SHOW_NAMES, SETTING_IS_ON(tdbShowNames));
 char *colorMode = cartOrTdbString(cart, track->tdb, BAM_COLOR_MODE, BAM_COLOR_MODE_DEFAULT);
 char *userTag = cartOrTdbString(cart, track->tdb, BAM_COLOR_TAG, BAM_COLOR_TAG_DEFAULT);
 if (sameString(colorMode, BAM_COLOR_MODE_TAG) && userTag != NULL)
     {
     if (! (isalpha(userTag[0]) && isalnum(userTag[1]) && userTag[2] == '\0'))
 	{
 	warn("%s: BAM tag '%s' is not valid -- must be a letter followed by a letter or number.",
 	     track->tdb->shortLabel, htmlEncode(userTag));
 	cartRemoveVariableClosestToHome(cart, track->tdb, FALSE, BAM_COLOR_TAG);
 	}
     }
-addBamBaseAndIndelSettings(track->tdb);
+bamAddBaseAndIndelSettings(track->tdb);
 
 if (isPaired)
     {
     linkedFeaturesSeriesMethods(track);
     track->loadItems = bamPairedLoadItems;
     track->drawItems = bamLinkedFeaturesSeriesDraw;
     track->drawItemAt = bamPairedDrawAt;
     }
 else
     {
     linkedFeaturesMethods(track);
     track->loadItems = bamLoadItems;
     track->drawItems = bamLinkedFeaturesDraw;
     track->drawItemAt = bamDrawAt;
     }