818b00115a3e9452ac1e577e0319ae6678955b0c
braney
  Fri Nov 5 07:38:43 2010 -0700
some cactus stuff for benedict
diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c
index a90e3c1..a51919a 100644
--- src/hg/hgTracks/simpleTracks.c
+++ src/hg/hgTracks/simpleTracks.c
@@ -9601,99 +9601,135 @@
 
 
 char *cactusName(struct track *tg, void *item)
 /* Get name to use for refGene item. */
 {
 return "";
 }
 
 
 void cactusDraw(struct track *tg, int seqStart, int seqEnd,
         struct hvGfx *hvg, int xOff, int yOff, int width,
         MgFont *font, Color color, enum trackVisibility vis)
 {
 double scale = scaleForWindow(width, seqStart, seqEnd);
 struct slList *item;
+        color=MG_RED;
+hvGfxSetClip(hvg, insideX, yOff, insideWidth, tg->height);
 for (item = tg->items; item != NULL; item = item->next)
     {
-    if(tg->itemColor != NULL)
-        color = tg->itemColor(tg, item, hvg);
+    //if(tg->itemColor != NULL)
+        //color = tg->itemColor(tg, item, hvg);
+    /*
+    if (color == MG_BLACK)
+        color=MG_RED;
+    else
+        color=MG_BLACK;
+        */
     char *name = tg->itemName(tg, item);
     name = strchr(name, '.');
 
     if (name != NULL)
         name++;
     int y = atoi(name) * tg->lineHeight + yOff;
 
     tg->drawItemAt(tg, item, hvg, xOff, y, scale, font, color, vis);
     }
+hvGfxUnclip(hvg);
 //linkedFeaturesDraw(tg, seqStart, seqEnd,
         //hvg, xOff, yOff, width,
         //font, color, vis);
 }
 
 void cactusDrawAt(struct track *tg, void *item,
 	struct hvGfx *hvg, int xOff, int y, double scale,
 	MgFont *font, Color color, enum trackVisibility vis)
 {
 linkedFeaturesDrawAt(tg, item,
 	hvg, xOff, y, scale,
 	font, color, vis);
 }
 
 int cactusHeight(struct track *tg, enum trackVisibility vis)
 {
-tg->height = 3 * tg->lineHeight;
+tg->height = 5 * tg->lineHeight;
 return tg->height;
 }
 
 int cactusItemHeight(struct track *tg, void *item)
 {
 return tg->lineHeight;
 }
 
 Color cactusNameColor(struct track *tg, void *item, struct hvGfx *hvg)
 {
 return MG_WHITE;
 }
 
 void cactusLeftLabels(struct track *tg, int seqStart, int seqEnd,
 	struct hvGfx *hvg, int xOff, int yOff, int width, int height,
 	boolean withCenterLabels, MgFont *font, Color color,
 	enum trackVisibility vis)
 {
 }
 
+Color cactusColor(struct track *tg, void *item, struct hvGfx *hvg)
+{
+static boolean firstTime = TRUE;
+static unsigned colorArray[5];
+
+if (firstTime)
+    {
+    firstTime = FALSE;
+    int ii;
+    for(ii=0; ii < 5; ii++)
+        colorArray[ii] = MG_RED;
+    }
+
+char *name = tg->itemName(tg, item);
+name = strchr(name, '.');
+
+if (name != NULL)
+    name++;
+int y = atoi(name);
+
+if (colorArray[y] == MG_RED)
+    colorArray[y] = MG_BLACK;
+else
+    colorArray[y] = MG_RED;
+return colorArray[y];
+}
+
 void cactusBedMethods(struct track *tg)
 /* cactus bed track methods */
 {
 tg->freeItems = linkedFeaturesFreeItems;
 tg->drawItems = cactusDraw;
 tg->drawItemAt = cactusDrawAt;
 tg->mapItemName = linkedFeaturesName;
 tg->totalHeight = cactusHeight;
 tg->itemHeight = cactusItemHeight;
 tg->itemStart = linkedFeaturesItemStart;
 tg->itemEnd = linkedFeaturesItemEnd;
 tg->itemNameColor = linkedFeaturesNameColor;
 tg->nextPrevExon = linkedFeaturesNextPrevItem;
 tg->nextPrevItem = linkedFeaturesLabelNextPrevItem;
 tg->loadItems = loadGappedBed;
 //tg->itemName = cactusName;
 tg->itemName = linkedFeaturesName;
 //tg->mapItemName = refGeneMapName;
-//tg->itemColor = blastColor;
+tg->itemColor = cactusColor;
 tg->itemNameColor = cactusNameColor;
 tg->drawLeftLabels = cactusLeftLabels;
 }
 
 void blastMethods(struct track *tg)
 /* blast protein track methods */
 {
 tg->loadItems = loadBlast;
 tg->itemName = refGeneName;
 tg->mapItemName = refGeneMapName;
 tg->itemColor = blastColor;
 tg->itemNameColor = blastNameColor;
 }