src/hg/hgTracks/simpleTracks.c 1.101
1.101 2009/09/14 15:30:12 tdreszer
Use imgTrackAddMapItem in case map items need to be split between slices. Experiment with making short map items for full bed.
Index: src/hg/hgTracks/simpleTracks.c
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/hgTracks/simpleTracks.c,v
retrieving revision 1.100
retrieving revision 1.101
diff -b -B -U 4 -r1.100 -r1.101
--- src/hg/hgTracks/simpleTracks.c 4 Sep 2009 18:02:33 -0000 1.100
+++ src/hg/hgTracks/simpleTracks.c 14 Sep 2009 15:30:12 -0000 1.101
@@ -572,14 +572,16 @@
}
#ifdef IMAGEv2_UI
if(theImgBox && curMap)
{
- // FIXME: The problem with leftLabel toggle appears to be a single map area meant to cover the whole leftLabel and data!
- // eg: COORDS="11,395,800,405" in non IMAGEv2 image covers everything left of button through to right edge of image
- // Solution? Either drop the toggle on side button, or make separate map areas.
char link[512];
safef(link,sizeof(link),"%s?%s",hgTracksName(), ui->string); // NOTE: position removed due to portal
- mapSetItemAdd(curMap,link,(char *)(message != NULL?message:NULL),x, y, x+width, y+height);
+ //#ifdef IMAGEv2_SHORT_MAPITEMS
+ // if(x < insideX && x+width > insideX)
+ // warn("mapBoxReinvoke(%s) map item spanning slices. LX:%d TY:%d RX:%d BY:%d link:[%s]",hStringFromTv(toggleGroup->visibility),x, y, x+width, y+height, link);
+ //#endif//def IMAGEv2_SHORT_MAPITEMS
+ imgTrackAddMapItem(curImgTrack,link,(char *)(message != NULL?message:NULL),x, y, x+width, y+height);
+ //mapSetItemAdd(curMap,link,(char *)(message != NULL?message:NULL),x, y, x+width, y+height);
}
else
#endif//def IMAGEv2_UI
{
@@ -661,9 +663,14 @@
}
if (extra != NULL)
safef(link+strlen(link),sizeof(link)-strlen(link),"&%s", extra);
// Add map item to currnent map (TODO: pass in map)
- mapSetItemAdd(curMap,link,(char *)(statusLine!=NULL?statusLine:NULL),x, y, xEnd, yEnd);
+ #ifdef IMAGEv2_SHORT_MAPITEMS
+ if(x < insideX && xEnd > insideX)
+ warn("mapBoxHgcOrHgGene(%s) map item spanning slices. LX:%d TY:%d RX:%d BY:%d link:[%s]",track,x, y, xEnd, yEnd, link);
+ #endif//def IMAGEv2_SHORT_MAPITEMS
+ imgTrackAddMapItem(curImgTrack,link,(char *)(statusLine!=NULL?statusLine:NULL),x, y, xEnd, yEnd);
+ //mapSetItemAdd(curMap,link,(char *)(statusLine!=NULL?statusLine:NULL),x, y, xEnd, yEnd);
}
else
#endif//def IMAGEv2_UI
{
@@ -2797,8 +2804,15 @@
geneMapBoxW -= buttonW;
}
else if (rButton)
geneMapBoxW -= buttonW;
+#ifdef IMAGEv2_SHORT_MAPITEMS
+ if(x2 > 0)
+ {
+ geneMapBoxX = textX;
+ geneMapBoxW = x2-geneMapBoxX;
+ }
+#endif//def IMAGEv2_SHORT_MAPITEMS
tg->mapItem(tg, hvg, item, tg->itemName(tg, item), tg->mapItemName(tg, item),
s, e, geneMapBoxX, y, geneMapBoxW, heightPer);
}
}
@@ -2980,10 +2994,23 @@
{
/* The doMapItems will make the mapboxes normally but make */
/* them here if we're drawing nextItem buttons. */
if (nextItemCompatible(tg))
+#ifdef IMAGEv2_SHORT_MAPITEMS
+ {
+ // Convert start/end coordinates to pix
+ int s = tg->itemStart(tg, item);
+ int e = tg->itemEnd(tg, item);
+ int sClp = (s < winStart) ? winStart : s;
+ int eClp = (e > winEnd) ? winEnd : e;
+ int x1 = round((sClp - winStart)*scale) + xOff;
+ int x2 = round((eClp - winStart)*scale) + xOff;
+ genericDrawNextItemStuff(tg, hvg, vis, item, x2, x1, y, tg->heightPer, FALSE,color);
+ }
+#else//ifndef IMAGEv2_SHORT_MAPITEMS
genericDrawNextItemStuff(tg, hvg, vis, item, -1, -1, y, tg->heightPer, FALSE,
color);
+#endif//ndef IMAGEv2_SHORT_MAPITEMS
y += tg->lineHeight;
}
}
}