86ff9edc290b0762ee118cf6e21376c049a08c53 tdreszer Tue Aug 9 15:22:47 2011 -0700 Some dragScroll >1x only changes, ifdef'd out. Debugging these was very helpful in finding some obscure cases in true 1x scrolling which we are intending to release soon. diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c index ddbe069..21e37af 100644 --- src/hg/hgTracks/simpleTracks.c +++ src/hg/hgTracks/simpleTracks.c @@ -3038,31 +3038,35 @@ int y = yOff + tg->lineHeight * sn->row; tg->drawItemAt(tg, item, hvg, xOff, y, scale, font, color, vis); /* pgSnp tracks may change flags between items */ withLabels = (withLeftLabels && withIndividualLabels && (vis == tvPack) && !tg->drawName); if (withLabels) { int nameWidth = mgFontStringWidth(font, name); int dotWidth = tl.nWidth/2; boolean snapLeft = FALSE; boolean drawNameInverted = highlightItem(tg, item); textX -= nameWidth + dotWidth; snapLeft = (textX < insideX); /* Special tweak for expRatio in pack mode: force all labels * left to prevent only a subset from being placed right: */ snapLeft |= (startsWith("expRatio", tg->tdb->type)); +#if defined(IMAGEv2_DRAG_SCROLL_SZ) && (IMAGEv2_DRAG_SCROLL_SZ > 1) + if (theImgBox == NULL && snapLeft) +#else///if !defined(IMAGEv2_DRAG_SCROLL_SZ) || (IMAGEv2_DRAG_SCROLL_SZ <= 1) if (snapLeft) /* Snap label to the left. */ +#endif /// !defined(IMAGEv2_DRAG_SCROLL_SZ) || (IMAGEv2_DRAG_SCROLL_SZ <= 1) { textX = leftLabelX; assert(hvgSide != NULL); hvGfxUnclip(hvgSide); hvGfxSetClip(hvgSide, leftLabelX, yOff, insideWidth, tg->height); if(drawNameInverted) { int boxStart = leftLabelX + leftLabelWidth - 2 - nameWidth; hvGfxBox(hvgSide, boxStart, y, nameWidth+1, tg->heightPer - 1, color); hvGfxTextRight(hvgSide, leftLabelX, y, leftLabelWidth-1, tg->heightPer, MG_WHITE, font, name); } else hvGfxTextRight(hvgSide, leftLabelX, y, leftLabelWidth-1, tg->heightPer, labelColor, font, name); @@ -3148,30 +3152,45 @@ tg->drawItemAt(tg, item, hvg, xOff, y, scale, font, color, vis); if (vis == tvFull) { /* 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; + #if defined(IMAGEv2_DRAG_SCROLL_SZ) && (IMAGEv2_DRAG_SCROLL_SZ > 1) + if (theImgBox != NULL && vis == tvFull) // dragScroll >1x has no bed full leftlabels, + { // but in image labels like pack. + char *name = tg->itemName(tg, item); + int nameWidth = mgFontStringWidth(font, name); + int textX = round((s - winStart)*scale) + xOff; + textX -= (nameWidth + 2); + if (textX >= insideX && nameWidth > 0) + { + x1 = textX; // extends the map item to cover this label + Color itemNameColor = tg->itemNameColor(tg, item, hvg); + hvGfxTextRight(hvg,textX,y,nameWidth,tg->heightPer,itemNameColor,font,name); + } + } + #endif /// defined(IMAGEv2_DRAG_SCROLL_SZ) && (IMAGEv2_DRAG_SCROLL_SZ > 1) 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; } } } void genericDrawItems(struct track *tg, int seqStart, int seqEnd, struct hvGfx *hvg, int xOff, int yOff, int width, MgFont *font, Color color, enum trackVisibility vis)