src/hg/lib/customFactory.c 1.96
1.96 2009/02/10 22:12:08 kent
Creating bigBed type custom tracks.
Index: src/hg/lib/customFactory.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/lib/customFactory.c,v
retrieving revision 1.95
retrieving revision 1.96
diff -b -B -U 4 -r1.95 -r1.96
--- src/hg/lib/customFactory.c 9 Feb 2009 19:12:35 -0000 1.95
+++ src/hg/lib/customFactory.c 10 Feb 2009 22:12:08 -0000 1.96
@@ -1508,8 +1508,41 @@
bigWigRecognizer,
bigWigLoader,
};
+/*** Big Bed Factory - for big client-side BED tracks ***/
+
+static boolean bigBedRecognizer(struct customFactory *fac,
+ struct customPp *cpp, char *type,
+ struct customTrack *track)
+/* Return TRUE if looks like we're handling a wig track */
+{
+return (sameType(type, "bigBed"));
+}
+
+static struct customTrack *bigBedLoader(struct customFactory *fac,
+ struct hash *chromHash,
+ struct customPp *cpp, struct customTrack *track, boolean dbRequested)
+/* Load up big bed data until get next track line. */
+{
+/* Not much to this. A bigBed has nothing here but a track line. */
+struct hash *settings = track->tdb->settingsHash;
+char *dataUrl = hashFindVal(settings, "dataUrl");
+if (dataUrl == NULL)
+ errAbort("Missing dataUrl setting from track of type=bigBed");
+return track;
+}
+
+static struct customFactory bigBedFactory =
+/* Factory for bigBed tracks */
+ {
+ NULL,
+ "bigBed",
+ bigBedRecognizer,
+ bigBedLoader,
+ };
+
+
/*** Framework for custom factories. ***/
static struct customFactory *factoryList;
@@ -1528,8 +1561,9 @@
slAddTail(&factoryList, &pslFactory);
slAddTail(&factoryList, >fFactory);
slAddTail(&factoryList, &gffFactory);
slAddTail(&factoryList, &bedFactory);
+ slAddTail(&factoryList, &bigBedFactory);
slAddTail(&factoryList, &bedGraphFactory);
slAddTail(&factoryList, µarrayFactory);
slAddTail(&factoryList, &coloredExonFactory);
slAddTail(&factoryList, &encodePeakFactory);