b02bfdfe7e01807988b9fd8422643c0d245c90d1 larrym Mon Aug 22 11:56:21 2011 -0700 support call as a CGI using the cart (see redmine 4888) diff --git src/hg/hgTracks/renderMain.c src/hg/hgTracks/renderMain.c index 63cf2bc..d638b0b 100644 --- src/hg/hgTracks/renderMain.c +++ src/hg/hgTracks/renderMain.c @@ -93,36 +93,56 @@ track->loadItems(track); } verboseTime(2, "After load"); /* Initialize global image box. */ int sideSliceWidth = 0; // Just being explicit if (withLeftLabels) sideSliceWidth = (insideX - gfxBorder*3) + 2; theImgBox = imgBoxStart(database,chromName,winStart,winEnd,(!revCmplDisp),sideSliceWidth,tl.picWidth); 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); + cartSetString(cart, "hgt.contentType", "png"); + printf("Content-Disposition: filename=hgTracks.png\nContent-Type: image/png\n\n"); + doMiddle(cart); + } +else + { + // 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) usage(); hgTrackRenderFromCommandLine(argv[1], argv[2], argv[3]); verbose(2, "Overall total time: %ld millis
\n", clock1000() - enteredMainTime); + } return 0; }