15973bdabacf5ddf5dd9289d05e83a7cd4080dbb
braney
  Tue Nov 9 09:12:48 2021 -0800
support for bigRmsk from Robert Hubley robert.hubley@isbscience.org

diff --git src/hg/lib/customFactory.c src/hg/lib/customFactory.c
index 86e4372..8729662 100644
--- src/hg/lib/customFactory.c
+++ src/hg/lib/customFactory.c
@@ -2725,30 +2725,39 @@
 return track;
 }
 
 static struct customFactory bigWigFactory =
 /* Factory for wiggle tracks */
     {
     NULL,
     "bigWig",
     bigWigRecognizer,
     bigWigLoader,
     };
 
 
 /*** Big Bed Factory - for big client-side BED tracks ***/
 
+/* RMH: Added to support track hubs for RepeatMaskerViz track */
+static boolean bigRmskRecognizer(struct customFactory *fac,
+	struct customPp *cpp, char *type,
+    	struct customTrack *track)
+/* Return TRUE if looks like we're handling a bigRmsk track */
+{
+return (sameType(type, "bigRmsk"));
+}
+
 static boolean bigLollyRecognizer(struct customFactory *fac,
 	struct customPp *cpp, char *type,
     	struct customTrack *track)
 /* Return TRUE if looks like we're handling a bigLolly track */
 {
 return (sameType(type, "bigLolly"));
 }
 
 static boolean bigMafRecognizer(struct customFactory *fac,
 	struct customPp *cpp, char *type,
     	struct customTrack *track)
 /* Return TRUE if looks like we're handling a bigMaf track */
 {
 return (sameType(type, "bigMaf"));
 }
@@ -2950,30 +2959,39 @@
     NULL,
     "bedTabix",
     bedTabixRecognizer,
     bedTabixLoader,
     };
 
 static struct customFactory bigMafFactory =
 /* Factory for bigMaf tracks */
     {
     NULL,
     "bigMaf",
     bigMafRecognizer,
     bigBedLoader,
     };
 
+static struct customFactory bigRmskFactory =
+/* Factory for bigRmsk tracks */
+    {
+    NULL,
+    "bigRmsk",
+    bigRmskRecognizer,
+    bigBedLoader,
+    };
+
 static struct customFactory bigLollyFactory =
 /* Factory for bigLolly tracks */
     {
     NULL,
     "bigLolly",
     bigLollyRecognizer,
     bigBedLoader,
     };
 
 static struct customFactory bigPslFactory =
 /* Factory for bigPsl tracks */
     {
     NULL,
     "bigPsl",
     bigPslRecognizer,
@@ -3544,30 +3562,31 @@
     slAddTail(&factoryList, &bedGraphFactory);
     slAddTail(&factoryList, &microarrayFactory);
     slAddTail(&factoryList, &coloredExonFactory);
     slAddTail(&factoryList, &encodePeakFactory);
     slAddTail(&factoryList, &bedDetailFactory);
     slAddTail(&factoryList, &adjacencyFactory);
     slAddTail(&factoryList, &bamFactory);
     slAddTail(&factoryList, &vcfTabixFactory);
     slAddTail(&factoryList, &makeItemsFactory);
     slAddTail(&factoryList, &bigDataOopsFactory);
     slAddTail(&factoryList, &barChartFactory);
     slAddTail(&factoryList, &bigBarChartFactory);
     slAddTail(&factoryList, &interactFactory);
     slAddTail(&factoryList, &bigInteractFactory);
     slAddTail(&factoryList, &hicFactory);
+    slAddTail(&factoryList, &bigRmskFactory);
     slAddTail(&factoryList, &bigLollyFactory);
     }
 }
 
 struct customFactory *customFactoryFind(char *genomeDb, struct customPp *cpp,
 	char *type, struct customTrack *track)
 /* Figure out factory that can handle this track.  The track is
  * loaded from the track line if any, and type is the type element
  * if any from that track. */
 {
 struct customFactory *fac;
 customFactoryInit();
 for (fac = factoryList; fac != NULL; fac = fac->next)
     if (fac->recognizer(fac, cpp, type, track))
 	break;