801905c20d758a520abff2e0b8a269ceef3cce0c
larrym
  Thu Sep 8 10:21:15 2011 -0700
more work on return image via URL (redmine 4888)
diff --git src/hg/hgTracks/renderMain.c src/hg/hgTracks/renderMain.c
index d638b0b..bdb3486 100644
--- src/hg/hgTracks/renderMain.c
+++ src/hg/hgTracks/renderMain.c
@@ -102,39 +102,49 @@
 makeActiveImage(trackList, NULL);
 verboseTime(2,"After makeActiveImage");
 }
 
 int main(int argc, char *argv[])
 {
 if(argc == 1)
     {
     // CGI call
 
     // htmlPushEarlyHandlers(); XXXX do I need to do this?
 
     hPrintDisable();
     oldVars = hashNew(10);
     struct cart *cart = cartForSession(hUserCookie(), excludeVars, oldVars);
+
     // setup approriate CGI variables which tell hgTracks code what to do.
-    cartSetBoolean(cart, "hgt.imageV1", TRUE);
     cartSetBoolean(cart, "hgt.trackImgOnly", TRUE);
+    if(cartVarExists(cart, "jsonp"))
+        {
+        cartSetString(cart, "hgt.contentType", "jsonp");
+        cartSetString(cart, "hgt.trackNameFilter", cartString(cart, "track"));
+        }
+    else
+        {
     cartSetString(cart, "hgt.contentType", "png");
-    printf("Content-Disposition: filename=hgTracks.png\nContent-Type: image/png\n\n");
+        cartSetBoolean(cart, "hgt.imageV1", TRUE);
+        }
     doMiddle(cart);
     }
 else
     {
+    // XXXX remove this code ... well, maybe not - this still might be useful for a stand-alone renderer.
+
     // command line call
 
     /* Set up some timing since we're trying to optimize things very often. */
     long enteredMainTime = clock1000();
     verboseTimeInit();
     /* Push very early error handling - this is just
      * for the benefit of the cgiVarExists, which
      * somehow can't be moved effectively into doMiddle. */
     // htmlPushEarlyHandlers();
 
     /* Set up cgi vars from command line. */
     // cgiSpoof(&argc, argv);
     optionInit(&argc, argv, options);
 
     if (argc != 4)